- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想从传递给序列化器的数据中添加一个额外的键值对,但是出现此错误:
ValueError: Cannot assign "1": "ExamLog.student" must be a "Students" instance.
序列化器.py
class ExamSubmitSerializer(serializers.ModelSerializer):
def to_internal_value(self, data):
x = get_score(data['exam']) # This will result to 1, I have no errors with this one
data['score'] = x
return data
class Meta:
model = ExamLog
fields = ('student', 'score', 'exam_started')
# Will use this one for auto-email and auto-pdf creation
# def create(self, validated_data):
# # print "-----"
# # y = validated_data.pop('exam', None)
# # print y
# print validated_data
# x = self.Meta.model(**validated_data)
# x.save()
View .py
@api_view(['POST'])
def submitExam(request):
if request.method == 'POST':
data = request.data
student = data.get('student', None)
exam = data.get('exam', None)
serializer = ExamSubmitSerializer(data=data)
if serializer.is_valid():
serializer.save()
return Response(standardResponse(data=serializer.data), status=status.HTTP_201_CREATED)
else:
return Response(standardResponse(errors=serializer.errors), status=status.HTTP_400_BAD_REQUEST)
url.py
urlpatterns = [
# url(r'^view/', views.viewExams),
url(r'^view/', views.getQuestion),
url(r'^add/', views.addUpdateQuestion),
url(r'^submit/', views.submitExam),
url(r'^', views.filterQuestions),
]
模型.py
class Choices(models.Model):
question = models.ForeignKey(Questions)
choice = models.TextField()
correct = models.NullBooleanField()
def __unicode__(self):
return self.choice
class ExamLog(models.Model):
student = models.ForeignKey(Students)
# answers = models.JSONField? # To be used for data science statistical purposes
score = models.PositiveIntegerField(null=True, blank=True, default=None)
exam_started = models.DateTimeField(null=True, blank=True, default=None)
exam_finished = models.DateTimeField(auto_now_add=True)
获取分数方法:
def get_score(answers):
x = Choices.objects.filter(id__in=answers).filter(correct=1)
return x.count()
API 请求示例:
{"student":1, "exam":[ 1597, 1620, 1906, 1648, 1656, 1718, 1611, 1551, 1812, 1745, 1489, 1815, 1527, 1485, 1512, 1831, 1545, 1713, 1808, 1530 ]}
我明白这个错误的含义。应传递模型的实例而不是其 id,但是当我不包含 to_internal_value() 方法时,不会发生此错误,并且实际上会保存该错误。然而,这将导致分数为空
我想在分数上添加一个值,该值来自数据的考试键
最佳答案
def to_internal_value(self, data):
x = get_score(data['exam']) # This will result to 1, I have no errors with this one
data['score'] = x
data = super(ExamSubmitSerializer, self).to_internal_value(data)
return data
在返回数据之前调用方法上的 super 将允许再次清理数据以及操作的分数数据键值。
关于python - Django Rest Framework ModelSerializer保存错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37715373/
我有两个模型: class Article(models.Model): name = models.CharField(max_length=255) price = models.
更新:django-rest-framework 3.7中将此行为识别为错误并已解决。现在,序列化程序将根据服务器的时区一致地显示时间:https://github.com/tomchristie/d
我在 django Rest 框架方面遇到问题。 我的前台正在向 drf 发布数据,其中一个字段可能为 null 或空字符串 ""。 # models.py class Book(models.Mod
我有两个模型 CustomUser 和 UserProfile。 class CustomUser(AbstractBaseUser, PermissionsMixin): email = m
我的项目中有一些模型,我需要 API 的特殊响应,我正在使用 Django Rest 框架。 class Goal(models.Model): name = models.CharField
我将在这方面引用 django-rest-framework API 示例。假设我们有两个定义如下的序列化程序。 class TrackSerializer(serializers.ModelSeri
我有一个 PostSerializer ,它有一个使用 comments 的 CommentSerializer 字段。我想更改此 CommentSerializer 的查询集,以便它不会一次显示所有
我是 python 和 django 的新手,正在学习序列化器。我观察到,在定义序列化器类时,它需要在其中嵌套一个元类。我不擅长这个元类概念,所以我用谷歌搜索它并发现元类是一个实例是类的类。即使读完后
Django 休息框架 ModelSerializer 如何使用ModelSerializer与 User . 我刚试过 quickstart . 这很好。但密码以明文形式保存。 $ pip free
Python模型 class Foo(models.Model): context = models.CharField() 序列化器 class FooSerializer(serializ
我正在托管一个 API,为此,我正在使用 Django Rest Framework .我有一个模型,我通过 API 获取一些数据,通过模型和模型序列化器存储在数据库中。 我的问题是 MySQL 表中
models.py: class Car(): producer = models.ForeignKey(Producer, blank=True, null=True,) color
django rest framework 的 Serializer 和 ModelSerializer 有什么区别?你什么时候做一个或另一个?我可以使用 ModelSerializer 进行身份验证
这是一个简单的问题,但我对 django-rest-framework 很陌生。 我想知道是否有任何方法可以从序列化程序访问模型上定义的方法。? 说我有一个模型 class Listing(model
我们想为我们的 django 项目提供一个 api,所以我们使用了 drf(django rest 框架)。我们使用 ModelSerializer,它提供了一个快捷方式,可以让您自动创建一个带有与
我可以向 ModelSerializer 子类添加其他字段吗? 通过说“附加字段”,我的意思是某些字段不属于数据库中的任何模型,任何尝试将这些字段映射到现有模型字段的努力都会失败。我需要包含这些字段的
我想在用于序列化查询集的类上使用过滤器。我构建了以下过滤器: # define a filterset class commentFilter(django_filters.FilterSet):
我正在编写一个 Django 应用程序,该应用程序非常庞大并且具有大量 API 端点。此应用程序使用 DRF 序列化通过 JSON 发送到前端的信息,并反序列化前端通过 JSON 发送的信息。 为了便
我有一个模型 BaseUser,它继承自 AbstractUser 并且有两个附加字段:complex_list 和 active_complex。 complex_list 是一个通过登记表连接到
我有一个简单的 ModelSerializer,我想对列表/详细信息使用不同的字段,如下所示,这可能吗? class ItemSerializer(serializers.ModelSerialize
我是一名优秀的程序员,十分优秀!