在我的測驗應用程序中,每個用戶都可以進行多次嘗試。我的模型設置如下: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 回答

絕地無雙
TA貢獻1946條經驗 獲得超4個贊
簡單的錯誤,該quiztaker
對象是一個QuerySet
.
您應該使用循環attempt
中分配的變量for
:
for attempt in quiztaker: return attempt.completed #the error comes from this line
添加回答
舉報
0/150
提交
取消