这是在 Django 中创建主键的正确方法吗?

Is this the correct way of making primary keys in django?

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

这是在 django 中创建主键的正确方法吗??

主键的正确语法是-:

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

Is this the correct way of making a primary key in django??

。您使用 AutoField [Django-doc] 作为主键,因为那时值由数据库分派,所以:

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

但您不必指定主键:如果您自己不指定主键,Django 会自动将名称为 id 的主键添加到模型中。

不,这不是在 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