OneToOneFields;发布请求现在全部返回400

时间:2016-06-14 16:06:51

标签: django

我有:

class Thing(BaseModel):
    #doesn't matter

class OtherThing(BaseModel):
    thing = models.OneToOneField( Thing,
    related_name = 'other_thing',
    null         = True,
    blank        = True,
)

现在我的django后端不允许我在有效负载中将other_thing设置为null时保持一个事物模型。这在概念上对我没有任何意义,如果我永远不能保存1-2-1的第一部分,我怎么能保存第二部分?

更具体地说,向api / thing发布请求返回400; {“other_thing”:[“此字段可能不为空。”]}

串行器:

class ThingSerializer(serializers.ModelSerializer):

    class Meta:
        model  = Thing
        fields = ('id', 'name', 'other_thing')

class OtherThingSerializer(serializers.ModelSerializer):

    class Meta:
        model  = OtherThing
        fields = ('id', 'name', 'thing')

1 个答案:

答案 0 :(得分:1)

所以我想通了,我需要设置' other_thing'像read_only_field一样;

class ThingSerializer(serializers.ModelSerializer):

class Meta:
    model  = Thing
    fields = ('id', 'name', 'other_thing')
    read_only_field = ('other_thing',)

这使得Django在POST进入时不会在有效负载中期望它,但是在请求Thing时它仍然会将其发送出去。