在客户端创建UUID并使用Django REST Framework保存主键并使用POST

时间:2015-07-28 21:27:38

标签: python django rest django-rest-framework

我希望能够在客户端上创建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')

1 个答案:

答案 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')