在Django Rest Framework中填充唯一ID

时间:2016-03-31 15:59:01

标签: python django django-rest-framework

我试图让我在动物类中的ID唯一,这样它就会自动递增,而无需用户将数据添加到字段中(因此隐藏了字段),但我无法弄清楚如何做到这一点。

现在我在models.py

中有这个
 class Animal(models.Model):
    id = models.CharField(max_length=100, blank=True, unique=True, default=uuid.uuid4, primary_key=True)
    name = models.CharField(max_length=200)

在我看来,我必须使id唯一,但目前它没有做任何事情。

以下是我的serialisers.py供参考:

class AnimalSerialiser(serializers.HyperlinkedModelSerializer):

    doctor = DoctorSerealiser(read_only=True)


    class Meta:
        model = Animal
        fields = ('id' , 'name' , 'gender' , 'breed' , 'adoption' , 'vaccines', 'doctor')

1 个答案:

答案 0 :(得分:0)

正如其他人在评论中提到的那样,你错误地定义了你的模型。 Django默认添加一个自动递增字段。请查看文档以获取更多信息 - https://docs.djangoproject.com/en/1.9/topics/db/models/#automatic-primary-key-fields

你真的需要:

class Animal(models.Model):
    name = models.CharField(max_length=200)

然后您仍然可以像animal.id那样访问该字段。

UUID与自动递增ID完全不同。请参阅wiki - 它们基本上只是几乎不可能生成重复项的字符串。