在DRF中没有id字段的POST

时间:2015-09-13 03:05:28

标签: python django django-rest-framework

这是我项目中的模型:

class Event(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    title = models.CharField(max_length=100)

然后我可以使用以下JSON进行POST以创建新事件

{
    title:"abc",
    id: "3b60a22c-d46e-46ca-b978-ec81a8b47fcc"
} 

但如果我发布没有id字段

{
    title:"abc"
}

请求将返回

{"id":["This field is required."]}

在这种情况下,我希望服务器自动生成id字段,怎么办?

1 个答案:

答案 0 :(得分:0)

根据问题中提供的信息,我猜您的序列化程序如下:

class EventSerializer(serializers.ModelSerializer):
    id =  serializers.UUIDField()

    class Meta:
        model = Event

在此方案中, id 将被视为必填字段。因此,为了满足您的要求,请将序列化程序更改为:

class EventSerializer(serializers.ModelSerializer):
    class Meta:
        model = Event