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__()
и убедился что поле присутствует, так-же в том, что в коде я правильно его указываю, но от ошибки это не избавляет.
У меня есть два вопроса ?
- Как это решить ? В чем дело ?
- Правильный ли это вообще подход для моей задачи ?