Django模型中的自定义ID字段

use*_*152 2 python django

我在Django中制作一个Web应用程序。我想在模型中使用自定义id字段,并且我了解uuid模块。问题是我不知道将这个逻辑放在哪里。我不想使用Django的AutoField。我希望它是这样的,如果输入一行,则此id字段必须自定义而不是AutoField。我想到一个愚蠢的想法是,在使用我的自定义ID插入行之后,稍后更改ID字段。谁能帮我解决这个问题。非常感谢您的协助。

eug*_*ene 9

https://docs.djangoproject.com/zh-CN/1.9/topics/db/models/#automatic-primary-key-fields

如果您想指定自定义主键,只需在其中一个字段上指定primary_key = True即可。如果Django看到您已显式设置Field.primary_key,则不会添加自动ID列。

所以你想要(来自https://docs.djangoproject.com/es/1.9/ref/models/fields/#django.db.models.UUIDField

import uuid
from django.db import models

class MyUUIDModel(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    # other fields
Run Code Online (Sandbox Code Playgroud)

您不必命名id我认为的字段。

  • @FabioMagarelli 理论上是的,但它有 16 个随机字节,所以实际上你不必担心它。为了获得 50% 的碰撞机会(即两个 uuid 具有相同的值),您必须在 85 年里每秒生成 10 亿个 uuid。 (2认同)