我希望能够在客户端上创建UUID
并将其发送到 Django Rest Framework (DRF)并将其用于Primary Key
该模型。
到目前为止,当我在源代码中发送标记为Primary Key
的{{1}}时,DRF忽略id
并使用模型的默认参数生成新的{ {1}}。
但是,当我从模型测试时,使用普通的Django ORM创建对象,并预先设置id
,模型接受UUID
作为它UUID
UUID
1}}并且不会尝试重新创建一个新的。
这可能吗?
我的筹码是
Django 1.8
Django Rest Framework 3.1
这是代码。
serializers.py:
Primary Key
models.py:
class PersonCreateSerializer(serializers.ModelSerializer):
class Meta:
model = Person
fields = ('id', 'username', 'email', 'password')
答案 0 :(得分:8)
The id
field of the serializer is set as read-only because of the editable=False
argument.
Model fields which have editable=False set, and AutoField fields will be set to read-only by default,
Try declaring it explicitly:
class PersonCreateSerializer(serializers.ModelSerializer):
# Explicit declaration sets the field to be `read_only=False`
id = serializers.UUIDField()
class Meta:
model = Person
fields = ('id', 'username', 'email', 'password')