#django #django-rest-framework
#django #django-rest-framework
Вопрос:
Я хочу создать приложение для викторины, и у меня есть две модели, которые выглядят так:
class Question(models.Model):
question = models.CharField(max_length=100)
class Answer(models.Model):
answer = models.CharField(max_length=30)
is_true = models.BooleanField(default=False)
question = models.ForeignKey(Question, on_delete=models.CASCADE)
Теперь я хочу создать ModelSerializer, который содержит вопрос и связанные с ним ответы. Что-то вроде этого:
[
{
'question': 'Something',
'answers': [
'something1', 'something2', 'something3'
]
}
]
Проблема, с которой я сталкиваюсь, заключается в том, что внешний ключ находится в модели ответа, а не в модели вопроса.
Как я могу добавить Answers
в Question
модель? Спасибо
Ответ №1:
Вероятно, лучше переименовать отношение в обратном порядке с answer_set
на answers
, это делает его более согласованным между сериализаторами и моделями:
class Answer(models.Model):
answer = models.CharField(max_length=30)
is_true = models.BooleanField(default=False)
question = models.ForeignKey(
Question,
on_delete=models.CASCADE,
related_name='answers'
)
Вы можете сериализовать ответы с помощью SlugRelatedField
[drf-doc]:
class QuestionSerializer(serializers.ModelSerializer):
answers = serializers.SlugRelatedField(
many=True,
read_only=True,
slug_field='answer'
)
class Meta:
model = Question
fields = ['question', 'answers']