小编典典

Django使用get_user_model与settings.AUTH_USER_MODEL

python

阅读Django文档:

get_user_model()

而不是直接引用用户,您应该使用django.contrib.auth.get_user_model()引用用户模型。此方法将返回当前活动的用户模型-
如果指定了自定义用户模型,则返回用户模型,否则返回用户。

在定义与用户模型的外键或多对多关系时,应使用AUTH_USER_MODEL设置指定自定义模型。

我对以上文字感到困惑。我应该这样做吗?

author = models.ForeignKey(settings.AUTH_USER_MODEL)

或这个…

author = models.ForeignKey(get_user_model())

两者似乎都起作用。


阅读 166

收藏
2021-01-20

共1个答案

小编典典

使用settings.AUTH_USER_MODEL会延迟实际模型类的检索,直到所有应用程序都加载完毕。get_user_model会在您首次导入应用程序时尝试检索模型类。

get_user_model无法保证User模型已经加载到应用程序缓存中。它可能会在您的特定设置中起作用,但这是一个命中注定的情况。如果您更改某些设置(例如的顺序INSTALLED_APPS),则很可能会中断导入,您将不得不花费更多的时间进行调试。

settings.AUTH_USER_MODEL
将传递一个字符串作为外键模型,并且如果在导入该外键时模型类的检索失败,则检索将被延迟,直到将所有模型类都加载到缓存中为止。

2021-01-20