Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Django Rest框架中填充唯一ID_Python_Django_Django Rest Framework - Fatal编程技术网

Python 在Django Rest框架中填充唯一ID

Python 在Django Rest框架中填充唯一ID,python,django,django-rest-framework,Python,Django,Django Rest Framework,我试图使我在类Animal中的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.CharFiel

我试图使我在类Animal中的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')

正如其他人在评论中提到的,您定义的模型是错误的。默认情况下,Django会添加一个自动递增字段。查看文档以了解更多信息-

你真的只需要:

class Animal(models.Model):
    name = models.CharField(max_length=200)
然后您仍然可以访问该字段,如
animal.id


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

什么是“什么都不做”?因此它显示字段,我可以省略ID,并显示为
“”
在我的表和数据库中为什么使用UUID作为主键?为什么不使用普通的自动字段?您不需要自己设置
id
字段。如果不创建
id
字段,它将基于DB自动增加其值。另外,使用UUID作为PK是个坏主意。是的,django为您创建了一个名为
id
的自动字段。您可以使用字段名
id
在页面中进行访问,并尝试了您的建议,但如果字段还设置了“primary_key=True”,则获取此错误
“id”只能用作字段名。
@user3395936-您是否迁移或删除并重新创建了数据库?