gpt4 book ai didi

django - 警告 : Auto-created primary key used when not defining a primary key type, 默认为 'django.db.models.AutoField'

转载 作者:行者123 更新时间:2023-12-04 11:06:52 30 4
gpt4 key购买 nike

为什么这会显示警告,因为它默认从 User 模型中获取主键,所以我还应该再次将主键声明为 Registration 或候选模型。
模型.py

from django.db import models
from django.contrib.auth.models import User
# Create your models here.


class Registration(models.Model):
fname = models.CharField(max_length=30)
lname = models.CharField(max_length=30)
# phone = models.BigIntegerField(max_length=10,primary_key=True)
dob=models.DateField()
user = models.OneToOneField(User,on_delete=models.CASCADE,primary_key=True)
def __str__(self):
return self.fname

class candidate(models.Model):
full_name = models.CharField(max_length=30)
position = models.CharField(max_length=30)
total_vote = models.IntegerField(default=0)
def __str__(self):
return "{} -- {}".format(self.full_name,self.position)
出现问题
WARNINGS:
poll.candidate: (models.W042) Auto-created primary key used when not defining a primary key type, by default 'django.db.models.AutoField'.
HINT: Configure the DEFAULT_AUTO_FIELD setting or the PollConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.

最佳答案

当你在 Django 中定义一个模型而不指定主键时,Django 会自动为你创建一个主键。主键设置为整数。如果您想覆盖字段类型,您可以在每个模型的基础上执行此操作。
从 Django 3.2 开始,您现在可以在设置中自定义自动创建的主键的类型。
在 Django 3.2 中启动新项目,主键的默认类型设置为 BigAutoField,它是一个 64 位整数。但是,早期版本将隐式主键的类型设置为整数。
这意味着当您升级到 3.2 时,您将开始看到有关您没有明确定义的主键类型这一事实的警告。满足 Django 对显式设置的主键类型的要求很容易,但您还需要选择是否要将主键字段类型从整数升级到 64 位整数。
有几种方法可以解决这个问题。从广义上讲,它们分为两类
在设置中配置 DEFAULT_AUTO_FIELD
打开项目的 settings.py 并在文件底部添加一个新行

DEFAULT_AUTO_FIELD = 'django.db.models.AutoField'
基于每个应用程序的设置
如果您更喜欢基于每个应用程序而不是整个项目来设置字段类型,您可以在 apps.py 中指定它。
from django.apps import AppConfig

class MyappConfig(AppConfig):
default_auto_field = 'django.db.models.AutoField'
name = 'Myapp'
在每个模型的基础上设置 AutoField 或 BigAutoField
如果您更喜欢更细粒度的控制,您可以设置每个模型 id 字段。
class Model1(models.Model):
id = models.BigAutoField(primary_key=True)

关于django - 警告 : Auto-created primary key used when not defining a primary key type, 默认为 'django.db.models.AutoField',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67783120/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com