class profiles(models.model):
customer_ID = models.IntegerField().primary_key
这是在 django 中制作主键的正确方法吗?
主键的正确语法是-:
class profiles(models.model):
customer_ID = models.IntegerField(primary_key=True)
不,这不是在 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
这是在 django 中制作主键的正确方法吗?
AutoField
[Django-doc] 作为主键,从那时起,值将由数据库调度,因此:
class profiles(models.model):
customer_ID = models.AutoField(primary_key=True, editable=False)
但是您不必指定主键:如果您自己不指定主键,Django 会自动向模型添加一个名为
id
的主键。
如果您想创建一个像整数字段一样自动生成和递增的 ID 字段,您可以使用 AutoField。以下是在 Django 模型中定义它的方法: 从 django.db 导入模型
类 MyModel(models.Model): custom_id = models.AutoField(primary_key=True)
使用 AutoField,Django 自动创建一个整数主键字段,该字段会随着每个新记录而递增。如果您希望 Django 处理 ID 生成并且不需要任何特定的 ID 格式,那么这很适合