Django / DRF — Ошибка атрибута при попытке получить значение для поля » users_answers_set` в сериализаторе `TestTakerSerializer`

#python #django #django-rest-framework

Вопрос:

каждый. Я хочу сделать тест в DRF. Но DRF выдал мне эту ошибку:

models.py:

 class TestTaker(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    test = models.ForeignKey(Test, on_delete=models.CASCADE)

class UsersAnswers(models.Model):
    test_taker = models.ForeignKey(TestTaker, on_delete=models.CASCADE)
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    answer = models.ForeignKey(Answer, on_delete=models.CASCADE)

 
 

serializers.py

 class UsersAnswersSerializer(serializers.ModelSerializer):
    class Meta:
        model = UsersAnswers
        fields = "__all__"
   
class TestTakerSerializer(serializers.ModelSerializer):
    users_answers_set = UsersAnswersSerializer(many=True)
class Meta:
        model = TestTaker
        fields = "__all__"
 

И ошибка в том, что:

 Got AttributeError when attempting to get a value for field `users_answers_set` on serializer `TestTakerSerializer`.
The serializer field might be named incorrectly and not match any attribute or key on the `TestTaker` instance.
Original exception text was: 'TestTaker' object has no attribute 'users_answers_set'.
 

Я попытался добавить параметр «источник» в users_answers_set, но ничего не изменилось.
Спасибо.

Ответ №1:

попробуй usersanswers_set вместо users_answers_set этого .

или

вы можете определить пользовательское имя, связанное с вашей моделью:

 class UsersAnswers(models.Model):
    test_taker = models.ForeignKey(TestTaker, related_name="users_answers_set" , on_delete=models.CASCADE)
 

Комментарии:

1. Спасибо, первый сработал