我一直在使用 UUIDField 作为我在 Django 中的主键。我的项目具有继承字段的模型层次结构,在顶部,我有以下超类:
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 中目前是否可行。^?如果不是,我应该找到不同的主键解决方案还是回滚?