在我的测验应用程序中,每个用户都可以进行多次尝试。我的模型设置如下:class Quiz(models.Model): title = models.CharField(max_length=15) slug = models.SlugField(blank=True) questions_count = models.IntegerField(default=0)class Question(models.Model): quiz = models.ForeignKey(Quiz, on_delete=models.CASCADE) label = models.CharField(max_length=1000)class Choice(models.Model): question = models.ForeignKey(Question, on_delete=models.CASCADE) answer = models.CharField(max_length=100) is_correct = models.BooleanField('Correct answer', default=False)class QuizTaker(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE) quiz = models.ForeignKey(Quiz, on_delete=models.CASCADE) correct_answers = models.IntegerField(default=0) completed = models.BooleanField(default=False) attempt_number = models.PositiveIntegerField(default=0)当我尝试确定给定的测验是否已完成时,我的序列化程序中出现错误:class MyQuizListSerializer(serializers.ModelSerializer): questions_count = serializers.SerializerMethodField() completed = serializers.SerializerMethodField() progress = serializers.SerializerMethodField() score = serializers.SerializerMethodField() class Meta: model = Quiz fields = ['id', 'title', 'type_of_content', 'song', 'slug', 'questions_count', 'completed', 'score', 'progress'] read_only_fields = ['questions_count', 'completed', 'progress'] def get_completed(self, obj): try: quiztaker = QuizTaker.objects.filter(user=self.context['request'].user, quiz=obj) for attempt in quiztaker: return quiztaker.completed #the error comes from this line except QuizTaker.DoesNotExist: return None谁能告诉我为什么我会收到此错误?我正在过滤,因为用户可以进行多次尝试,因此我得到一个查询集,因此我必须循环遍历它。该QuizTaker模型确实有一个completed字段,那么问题是什么?
1 回答
![?](http://img1.sycdn.imooc.com/5333a1920001d36402200220-100-100.jpg)
绝地无双
TA贡献1946条经验 获得超4个赞
简单的错误,该quiztaker
对象是一个QuerySet
.
您应该使用循环attempt
中分配的变量for
:
for attempt in quiztaker: return attempt.completed #the error comes from this line
添加回答
举报
0/150
提交
取消