阅读Django文档:
get_user_model()
而不是直接引用用户,您应该使用django.contrib.auth.get_user_model()引用用户模型。此方法将返回当前活动的用户模型- 如果指定了自定义用户模型,则返回用户模型,否则返回用户。 在定义与用户模型的外键或多对多关系时,应使用AUTH_USER_MODEL设置指定自定义模型。
而不是直接引用用户,您应该使用django.contrib.auth.get_user_model()引用用户模型。此方法将返回当前活动的用户模型- 如果指定了自定义用户模型,则返回用户模型,否则返回用户。
在定义与用户模型的外键或多对多关系时,应使用AUTH_USER_MODEL设置指定自定义模型。
我对以上文字感到困惑。我应该这样做吗?
author = models.ForeignKey(settings.AUTH_USER_MODEL)
或这个…
author = models.ForeignKey(get_user_model())
两者似乎都起作用。
使用settings.AUTH_USER_MODEL会延迟实际模型类的检索,直到所有应用程序都加载完毕。get_user_model会在您首次导入应用程序时尝试检索模型类。
settings.AUTH_USER_MODEL
get_user_model
get_user_model无法保证User模型已经加载到应用程序缓存中。它可能会在您的特定设置中起作用,但这是一个命中注定的情况。如果您更改某些设置(例如的顺序INSTALLED_APPS),则很可能会中断导入,您将不得不花费更多的时间进行调试。
User
INSTALLED_APPS
settings.AUTH_USER_MODEL 将传递一个字符串作为外键模型,并且如果在导入该外键时模型类的检索失败,则检索将被延迟,直到将所有模型类都加载到缓存中为止。