如何在Django中使用UUID

发布于 2021-01-29 15:10:30

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

id然后每次都给我相同的id。怎么了,我该如何解决?感谢您的帮助!

关注者
0
被浏览
179
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    我不确定为什么要创建UUID模型。您可以将uuid字段直接添加到Person模型。

    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()时,它已创建一个实例,并将其保存为类属性。这样做是没有意义的,MyUUIDModel每次加载models.py时都会创建。如果您确实想使用MyUUIDModel,则可以使用ForeignKey。然后,每个人都将链接到不同的MyUUIDModel实例。

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

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



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看