我正在尝试为我的Django对象获取唯一的id。在Django 1.8他们有UUIDField。我不确定如何使用此字段为模型中的每个对象生成唯一的ID。
这是我为UUIDField准备的
import uuid
from django.db import models
class MyUUIDModel(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
class Person(models.Model):
...
unique_id = MyUUIDModel()
我可以为UUID模型复制id,但每次我都得到完全相同的id.:(。例如:
person = Person.objects.get(some_field = some_thing)
id = person.unique_id.id
然后每次都给我相同的身份证。怎么了,我该怎么解决?谢谢你的帮助!
在声明您的Person模型时,您需要将创建的类用作子类,如下所示:
这样Person就成为MyUUIDModel的一个子类,并继承其id字段定义。
我不知道你为什么要创建UUID模型。您可以将uuid字段直接添加到人员模型中。
每个人都应该有一个唯一的id。如果您希望uuid是主键,您可以:
您当前的代码没有向此人添加字段。在执行MyUUIDModel()时,它创建了一个} 。然后每个人都会链接到不同的MyUUIDModel实例。
MyUUIDModel
实例,并将其保存为类属性。这样做没有意义,每次加载models.py时都会创建MyUUIDModel
。如果您真的想使用myuuid模型,可以使用^{但是,正如我前面所说,最简单的方法是直接将UUID字段添加到person。
可以直接将} 添加到
id
字段作为^{Person
模型中。不需要单独的MyUUIDModel
。我想你把它和UUIDField example中使用的
MyUUIDModel
混淆了,其中id
是一个UUIDField
。您可以只使用下面的代码,它将使用UUIDs
来表示id
。相关问题 更多 >
编程相关推荐