这是在 django 中制作主键的正确方法吗?

问题描述 投票:0回答:4
class profiles(models.model):
    customer_ID = models.IntegerField().primary_key

这是在 django 中制作主键的正确方法吗?

python django django-models frameworks primary-key
4个回答
6
投票

主键的正确语法是-:

class profiles(models.model):
    customer_ID = models.IntegerField(primary_key=True)

2
投票

不,这不是在 Django 中创建主键的正确方法,事实上你不必为你的模型指定主键,因为 django 会自动添加一个字段来为你保存主键。

在你的settings.py文件中,你会发现一行:

DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'

默认情况下,它将自动在您的所有模型中创建一个“id”字段。 BigAutoField 是一个 64 位整数,根据可用 id 自动递增,从 1 到 9223372036854775807。

class Profile(models.Model):

    customer_username = models.CharField(max_length=100)
    customer_email = models.EmailField()

Profile 模型将包含三个字段:id、customer_username、customer_email

但是,如果您想覆盖主键,例如使用 UUID 而不是常规 id,您可以按如下方式覆盖它:

import uuid

class Profile(models.Model):

    id = models.UUIDField(primary_key=True, default=uuid.uuid4,editable=False)
    customer_username = models.CharField(max_length=100)
    customer_email = models.EmailField()

更多细节请参考django文档:https://docs.djangoproject.com/en/4.0/ref/models/fields/#primary-key


2
投票

这是在 django 中制作主键的正确方法吗?

。您使用

AutoField
 [Django-doc] 作为主键,从那时起,值将由数据库调度,因此:

class profiles(models.model):
    customer_ID = models.AutoField(primary_key=True, editable=False)

但是您不必指定主键:如果您自己不指定主键,Django 会自动向模型添加一个名为

id
的主键。


0
投票

如果您想创建一个像整数字段一样自动生成和递增的 ID 字段,您可以使用 AutoField。以下是在 Django 模型中定义它的方法: 从 django.db 导入模型

类 MyModel(models.Model): custom_id = models.AutoField(primary_key=True)

使用 AutoField,Django 自动创建一个整数主键字段,该字段会随着每个新记录而递增。如果您希望 Django 处理 ID 生成并且不需要任何特定的 ID 格式,那么这很适合

© www.soinside.com 2019 - 2024. All rights reserved.