Django 1.7 - 修改模型的属性

时间:2014-09-29 21:00:58

标签: django django-1.7

以前在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?

1 个答案:

答案 0 :(得分:5)

根据documentationready()的{​​{1}}方法在填充注册表时调用,这意味着还会加载模型,因此引用模型不应该成为问题。

然而,正如文档中所指出的那样,该行代码仍然无效,因为它在AppConfig中:

  

您无法在定义应用程序的模块中导入模型   配置类,但您可以使用get_model()来访问模型   按名称分类

因此,请从ready()移除User._meta.get_field_by_name('email')[0]._unique=True并在您的应用配置中执行以下操作:

models.py