如何在江中使用UUID

2024-04-28 22:48:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试为我的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

然后每次都给我相同的身份证。怎么了,我该怎么解决?谢谢你的帮助!


Tags: 对象django模型importidmodeluuidmodels
3条回答

在声明您的Person模型时,您需要将创建的类用作子类,如下所示:

import uuid
from django.db import models

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

class Person(MyUUIDModel):
  ...

这样Person就成为MyUUIDModel的一个子类,并继承其id字段定义。

我不知道你为什么要创建UUID模型。您可以将uuid字段直接添加到人员模型中。

class Person(models.Model):
    unique_id = models.UUIDField(default=uuid.uuid4, editable=False, unique=True)

每个人都应该有一个唯一的id。如果您希望uuid是主键,您可以:

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

您当前的代码没有向此人添加字段。在执行MyUUIDModel()时,它创建了一个MyUUIDModel实例,并将其保存为类属性。这样做没有意义,每次加载models.py时都会创建MyUUIDModel。如果您真的想使用myuuid模型,可以使用^{}。然后每个人都会链接到不同的MyUUIDModel实例。

class Person(models.Model):
    ...
    unique_id = models.ForeignKey(MyUUIDModel, unique=True)

但是,正如我前面所说,最简单的方法是直接将UUID字段添加到person。

可以直接将id字段作为^{}添加到Person模型中。不需要单独的MyUUIDModel

我想你把它和UUIDField example中使用的MyUUIDModel混淆了,其中id是一个UUIDField。您可以只使用下面的代码,它将使用UUIDs来表示id

import uuid
from django.db import models

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

相关问题 更多 >