【问题标题】:Circular import in FK default value when using custom model使用自定义模型时以 FK 默认值循环导入
【发布时间】:2013-07-10 05:38:52
【问题描述】:

我正在尝试在我的应用程序 models.py 中为自定义用户模型定义外键默认值,例如:

  owner = models.ForeignKey(settings.AUTH_USER_MODEL, null=False, 
           default=get_user_model().objects.get()[0].pk)

自定义用户模型也在同一个models.py中定义

但是,当他们尝试使用 get_user_model() 时,我在另一个应用程序 models.py 中遇到了丑陋的循环导入问题:

django.core.exceptions.ImproperlyConfigured: AUTH_USER_MODEL refers to
model 'myapp.MyCustomUserModel' that has not been installed

我该如何解决这个问题?

【问题讨论】:

  • 在设置default时尽量不要调用get_user_model(),看看这个错误是否依然存在?

标签: django foreign-keys models


【解决方案1】:

添加一个方法来获取默认所有者,而不是将其作为值。

owner = models.ForeignKey(settings.AUTH_USER_MODEL, null=False, 
                          default=get_default_owner)

#this can be a global method and need not be in same model.
def get_default_owner():
    return get_user_model().objects.get()[0]

【讨论】:

  • 那行得通。我以前使用过这个default=get_default_owner(),但它不起作用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-14
  • 1970-01-01
  • 1970-01-01
  • 2018-10-13
  • 2019-11-16
  • 1970-01-01
相关资源
最近更新 更多