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

Aar*_*ier 12 python django rest django-rest-framework

我希望能够UUID在客户端上创建一个并将其发送到Django Rest Framework(DRF)并将其用于Primary Key模型.

到目前为止,当我发送在我的源代码中Primary Key标记的id,DRF忽略id并使用模型的默认参数来生成新的UUID.

但是,当我从模型测试时,使用普通的Django ORM来创建对象,并预先设置UUID,模型接受UUID它的原样Primary Key并且不会尝试重新创建一个新的.

这可能吗?

我的筹码是

  • Django 1.8

  • Django Rest Framework 3.1

这是代码.

serializers.py:

class PersonCreateSerializer(serializers.ModelSerializer):
    class Meta:
        model = Person
        fields = ('id', 'username', 'email', 'password')
Run Code Online (Sandbox Code Playgroud)

models.py:

from django.contrib.auth.models import AbstractUser

class BaseModel(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)

class Person(AbstractUser, BaseModel):
Run Code Online (Sandbox Code Playgroud)

Mar*_*way 8

由于参数id,序列化程序的字段设置为只读editable=False.

具有editable = False设置的模型字段和默认情况下AutoField字段将设置为只读,

尝试明确声明:

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')
Run Code Online (Sandbox Code Playgroud)