Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django Rest框架-可写嵌套序列化程序错误_Python_Django - Fatal编程技术网

Python Django Rest框架-可写嵌套序列化程序错误

Python Django Rest框架-可写嵌套序列化程序错误,python,django,Python,Django,我正在尝试创建一个测验应用程序,我是dajango和rest的初学者,我正在尝试创建一个序列化程序,用于创建带有选项的新问题,如果有人能给出一个工作示例,我也不太理解可写嵌套序列化程序是如何工作的 models.py: class Question(models.Model): quiz = models.ForeignKey(Quiz, related_name="question") question = models.CharField(max_length=200)

我正在尝试创建一个测验应用程序,我是dajango和rest的初学者,我正在尝试创建一个序列化程序,用于创建带有选项的新问题,如果有人能给出一个工作示例,我也不太理解可写嵌套序列化程序是如何工作的

models.py:

class Question(models.Model):
    quiz = models.ForeignKey(Quiz, related_name="question")
    question = models.CharField(max_length=200)

    def __unicode__(self):
        return self.question 

class Choice(models.Model):
    question = models.ForeignKey(Question, related_name="choice")
    choice = models.CharField(max_length=200)
    correct_answer = models.BooleanField(default=False)

    def __unicode__(self):
        return self.choice
serializers.py:

class createChoiceSerializer(serializers.ModelSerializer):
    class Meta:
        model = Choice
        fields = ('choice','correct_answer',)

class createQuestionSerializer(serializers.ModelSerializer):
    choices = createChoiceSerializer()
    class Meta:
        model = Question

    def create(self, validated_data):
        choices_data = validated_data.pop('choices')
        question = Choice.objects.create(**validated_data)
        for choice in choices_data:
            try:
                choice = Choice.objects.get(name=choice["name"])
            except Choice.DoesNotExist:
                choice = Choice.objects.create(**choice)
            question.choices.add(choice)
        return question
当我写问题和选择时,我犯了一个错误: 值错误位于/问题/创建


无法分配“u”您的名字“”:“Choice.question”必须是“question”实例。

question=Choice.objects.create(**validated\u data)

question
是一个
Choice
实例和
question.choices.add(Choice)
基本上将
Choice
添加到
Choice
实例中


您可以尝试
Question.objects.create(**validated\u data)
。我不确定这是否有效,但至少解决了您现在遇到的错误。

Choice.objects.create(**validated_data)为什么要将此指定给问题?应该是Question.objects.create(**验证的_数据)?@brsbilgic任意变量!你认为这就是问题所在吗?