- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在使用 UUIDField 作为我在 Django 中的主键。我的项目有一个带有继承字段的模型层次结构,在顶部,我有以下父类(super class):
import uuid
from django.db import models
class HasIDMixin(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False, unique=True, name='id')
更新到 Django 3.2.4 后,我收到以下警告:
WARNINGS:
app_base.MyProject: (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 AppBaseConfig.default_auto_field attribute to point to a subclass of AutoField, e.g. 'django.db.models.BigAutoField'.
按照警告的建议,我尝试了 settings.py 中的 DEFAULT_AUTO_FIELD 和 app_config 中的 default_auto_field,但出现以下错误:
ValueError: Primary key 'django.db.models.UUIDField' referred by DEFAULT_AUTO_FIELD must subclass AutoField.
我已经看到其他人使用 UUIDField 和 AutoField (
https://code.djangoproject.com/ticket/32577 ) 的自定义子类来解决这个问题,但没有发布有效的解决方案。这在 Django 3.2.^ 中目前可行吗?如果不是,我应该找到不同的主键解决方案还是回滚?
最佳答案
当没有将模型字段设置为该模型的主键时,Django 将自动向您的模型添加一个名为 id
的字段,该字段将用作主键。这个自动添加的键通常是 AutoField
。从 Django 3.2 开始,Django 允许您通过设置 AutoField
来设置用于这些自动生成的主键字段的 DEFAULT_AUTO_FIELD
类型。
考虑到您为模型显式设置主键,Django 不会为其生成字段。但是您仍然应该指定 DEFAULT_AUTO_FIELD
,因为您可能有一些不指定主键的模型。您可以安全地将 UUIDField
保留在模型中,也可以像这样设置 DEFAULT_AUTO_FIELD
:
DEFAULT_AUTO_FIELD = 'django.db.models.AutoField' # Or one of the other options as per your choice
关于python - UUIDField 可以用作 Django 3.2.^ 中的 default_auto_field 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67861435/
我像这样使用 django 字段: import uuid id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable
我有一个 Django 模型,我想在其中添加一个 UUIDField: uuid = models.UUIDField( default = uuid.uuid4, unique =
这是我的模型 from django.contrib.contenttypes.fields import GenericForeignKey from django.contrib.contentt
在一个模型中,我有一个像这样的 UUIDField: uuid = models.UUIDField(_('UUID'), primary_key=True, default=uuid.uuid4,
我有一个模型需要一些后处理(我生成了 body 字段的 MD5)。 models.py class MyModel(models.Model): id = models.UUIDField(p
这是我目前在 models.py 中的内容: class Campaign(models.Model): campaign_id = UUIDField(auto=True) name
与自制生成的唯一键相比,将 UUIDField 与 Django 和 Postgresql( native 数据类型)一起使用是否有优势? 目前我在我的模型上使用随机生成的字母数字 ID 字段,我想知
我刚刚进入 Django 进行一个快速项目,我发现有一个 UUIDField在模型中。 我将其用于每个模型都必须公开对象的外部 ID 字段。 default 参数会处理唯一性还是我必须在保存中写入它?
我尝试使用 default=uuid.uuid4().hex(而不是 default=uuid.uuid4( )) class Profile(models.Model): user = mo
如何在我的模型中使用 UUIDField? 如果我做 somefield = UUIDField 我得到: UUIDField is not defined. 我确实在我的模型文件之上导入了 uui
我有一个简单的模型:: class HasUUID(models.Model): name = models.CharField(max_length=10) batchid
从 Django 1.9.13 升级到 Django 1.10.7 时,我遇到了 Django 的原生 UUIDField 的奇怪问题。 我们在自定义用户模型上使用此 UUIDField,例如: us
使用时 GenericForeignKey连同UUIDField ,从通用对象的查询集中获取“真实模型”的查询集的推荐方法是什么? 以下是我正在测试的模型: import uuid from djan
所以我一直在 CharField 中使用 UUID 作为我正在从事的项目中的很多事情的 PK,工作正常,没有问题。如果我使用 UUIDField,后端中的某些内容将会出现 UUID 字段的问题(通常是
阅读这篇博文后 https://blog.starkandwayne.com/2015/05/23/uuid-primary-keys-in-postgresql/ 我想更多地了解 Django 如何
我有以下模型: class Show(models.Model): cid = models.UUIDField( default=uuid.uuid4, ed
我一直在使用 UUIDField 作为我在 Django 中的主键。我的项目有一个带有继承字段的模型层次结构,在顶部,我有以下父类(super class): import uuid from dja
升级到 Django 1.8.3 后,我需要从使用 django_extensions.db.fields.UUIDField 更改为新的 django.db.models.UUIDField。 问题
self.pk is None 不起作用,因为它是自动生成的。 有什么想法吗? 最佳答案 覆盖from_db @classmethod def from_db(cls, db, field_names
我有以下使用 django-uuidfield 作为主键的模型类: class FODType(models.Model): id = UUIDField(auto=True, primary
我是一名优秀的程序员,十分优秀!