我有3个模型。 Question
,Choice
和ChoiceColor
。
class Question(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
question= models.CharField(max_length=200)
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice = models.CharField(max_length=120)
vote_count = models.IntegerField(default=0)
class ChoiceColor(models.Model):
choice = models.OneToOneField(Choice, on_delete=models.CASCADE, null=True)
color = models.CharField(max_length=7)
我有一个看起来像这样的序列化器:
class CreateQuestionSerializer(serializers.ModelSerializer):
choice_set = ChoiceSerializer(many=True)
class Meta:
model = Question
fields = ('user', 'status', 'choice_set')
def create(self, validated_data):
choices_validated_data = validated_data.pop('choice_set')
question = Question.objects.create(**validated_data)
choices_serializer = self.fields['choice_set']
for choice in choices_validated_data:
choice['question'] = question
choices_serializer.create(choices_validated_data)
return question
另一个看起来像这样:
class ChoiceColorSerializer(serializers.ModelSerializer):
class Meta:
model = ChoiceColor
fields = ('color',)
class ChoiceSerializer(serializers.ModelSerializer):
color_set = ChoiceColorSerializer(many=False)
class Meta:
model = Choice
fields = ('choice', 'color_set')
由于某种原因,当我输入数据时,它不起作用。我需要为ChoiceSerializer
定义一个create方法,但是我不确定该怎么做?