DRF 序列化器深度使创建时忽略字段

Sim*_*nko 4 python django django-rest-framework

(该项目可在 github 上找到该问题)

出于某种原因,序列化程序的深度选项会在创建时忽略字段。

序列化器:

class AnswerSerializer(serializers.ModelSerializer):

    class Meta:
        model = Answer
        fields = ('question', 'body',)
        depth = 1
Run Code Online (Sandbox Code Playgroud)

看法:

class AnswerList(ListCreateAPIView):
    queryset = Answer.objects.all()
    serializer_class = AnswerSerializer
Run Code Online (Sandbox Code Playgroud)

当我尝试使用depth = 1I get创建答案时NOT NULL constraint failed: forum_answer.question_id,但是当我注释掉depth = 1一切时。但当然我没有得到一个完整的Question对象,只有pk它。

Sim*_*nko 6

在这里找到了更好的解决方案

现在序列化程序看起来像这样:

class AnswerSerializer(serializers.ModelSerializer):
    question_pk = serializers.PrimaryKeyRelatedField(
        queryset=Question.objects.all(), source='question', write_only=True
    )

    class Meta:
        model = Answer
        fields = ('question', 'question_pk', 'body',)
        depth = 1
Run Code Online (Sandbox Code Playgroud)

附:还致力于github上的项目。