django rest 3.1.1 - 具有"many"属性的一对多序列化程序

Oz *_*lom 5 python django serializer models django-rest-framework

我想创建一个简单的序列化程序,每个想要的人都可以使用多个答案添加一个问题(他想要多少个)

一个问题 - 多答案

  • 我希望能够以html格式添加构建,而不是编辑json.

我的模特:

    class Question(models.Model):
         question_text = models.CharField(max_length=30)

    class Answer(models.Model):
         question = models.ForeignKey(Question)
         answer_text = models.CharField(max_length=40)
Run Code Online (Sandbox Code Playgroud)

我的url.py

class AnswerSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Answer
        fields = ('answer_text',)


class QuestionSerializer(serializers.HyperlinkedModelSerializer):

    answers = AnswerSerializer(many=True)
    class Meta:
        model = Question
        fields = ('question_text', 'answers',)

class QuestionViewSet(viewsets.ModelViewSet):
    queryset = Question.objects.all()
    serializer_class = QuestionSerializer
Run Code Online (Sandbox Code Playgroud)

现在,当我运行网络时,我收到消息:

"HTML输入目前不支持列表."

请帮忙 :)

先编辑

即使我删除('many = True')我在尝试发布时收到错误:

/ questions /上的AssertionError .create()默认情况下,该方法不支持可写的嵌套字段..create()为序列化器编写显式方法api_project2.urls.QuestionSerializer,或read_only=True在嵌套的序列化器字段上设置.

这会产生第二个问题:create()方法,我不知道如何编辑

小智 3

当您删除 ('many=True') 时,尝试发布时会出现错误,因为您尚未重写函数 create,您应该重写函数 create