Django 'OneToOne' отношения

У меня есть модель вопроса у которой есть поле отноешнйи OneToOne

correct_answer = models.OneToOneField(
    to = 'Answer',
    on_delete = models.SET_NULL,
    related_name = 'сorrectly_answered_question',

    null = True,
)

Я хочу реализовать вывод того, есть ли правильный ответ на вопрос.

# QUESTION SERIALIZERS

class QuestionListSerializer( serializers.ModelSerializer ):
    """
        Question list serializer
    """

    labels = LabelListSerializer( many = True )
    is_answered = serializers.SerializerMethodField()

    class Meta:
        model = Question
        fields = (
            'title',
            'date_of_creation',
            'labels',
            'is_answered',

            'id',
        )

    def get_is_answered( self, obj ):
        return obj.correct_answer != None

Тут все работает как нужно, однако, так-же мне нужно при сериализации ответов, указывать какой из ответов является правильным

# ANSWER SERIALIZERS

class AnswerSerializer( serializers.ModelSerializer ):
    """
        Answer serilizer
    """

    children = serializers.SerializerMethodField()
    is_correct = serializers.SerializerMethodField()

    class Meta:
        model = Answer
        fields = (
            'creator',
            'content',
            'date_of_creation',
            'children',
            'is_correct',

            'id',
        )

    def get_children( self, obj ):
        return AnswerSerializer( obj.get_children(), many = True ).data

    def get_is_correct( self, obj ):
        return obj.correctly_answered_question() != None

Можно увидеть, что я пытаюсь сделать это путем понимания, есть ли какое то значение, помимо None у поля correctly_answered_question , однако я получае странную для меня ошибку:

'Answer' object has no attribute 'correctly_answered_question'

Иногда она может звучать как:

'Answer' has no 'correctly_answered_question'

Я решил дополнительно проверить наличие этого поля, используя магический метод __dir__() и убедился что поле присутствует, так-же в том, что в коде я правильно его указываю, но от ошибки это не избавляет.

У меня есть два вопроса ?

  1. Как это решить ? В чем дело ?
  2. Правильный ли это вообще подход для моей задачи ?
Вернуться на верх