以前在Django 1.6及更早版本中,我曾经做过以下操作,使User
的电子邮件属性与众不同:
class User(AbstractUser):
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['username']
User._meta.get_field_by_name('email')[0]._unique=True
我正在迁移到Django 1.7,但此代码引发了以下错误:
django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet.
一直追溯到User._meta.get_field_by_name('email')[0]._unique=True
。
我应该如何将其迁移到Django 1.7?
答案 0 :(得分:5)
根据documentation,ready()
的{{1}}方法在填充注册表时调用,这意味着还会加载模型,因此引用模型不应该成为问题。
然而,正如文档中所指出的那样,该行代码仍然无效,因为它在AppConfig
中:
您无法在定义应用程序的模块中导入模型 配置类,但您可以使用get_model()来访问模型 按名称分类
因此,请从ready()
移除User._meta.get_field_by_name('email')[0]._unique=True
并在您的应用配置中执行以下操作:
models.py