阅读Django文档:

get_user_model()

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

定义外键或与用户的多对多关系时

我把上面的课文搞糊涂了.我应该这样做吗:

author = models.ForeignKey(settings.AUTH_USER_MODEL)

或者这个...

author = models.ForeignKey(get_user_model())

两种方法似乎都奏效了.

推荐答案

使用settings.AUTH_USER_MODEL将延迟实际模型类的检索,直到加载完所有应用程序.get_user_model将在第一次导入您的应用程序时try 检索模型类.

get_user_model不能保证User型号已加载到应用程序缓存中.它可能会在您的特定设置中工作,但这是一种碰碰撞撞的情况.如果您更改某些设置(例如,INSTALLED_APPS的顺序),很可能会中断导入,并且您将不得不花费额外的时间进行调试.

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

Django相关问答推荐

Django Model邮箱字段是必需的,即使在我将其设置为NULL=True和BLACK=True之后也是如此

如何在Django中显示多个相关对象

在Django上传JPEG图像时遇到问题

有没有办法在Django中按需/点击仅获取和序列化一部分数据以提高性能?

我如何获得已循环的每个项目的名称?

如何在没有此前缀的情况下修复此 django 路径?

Pytest-django - 测试创建和传递所需的用户对象

Django 表单字段必填和可选配置

Django:无法从另一个应用程序导入模型

多租户 Django 应用程序:根据请求更改数据库连接?

Python / Django 中的 Unicode 与 UTF-8 混淆?

如何在 Django 中配置 X-Frame-Options 以允许 iframe 嵌入一个视图?

related_name 参数在 Django 模型中没有按预期工作?

Celery 和 Django 简单示例

单击弹出框会滚动回页面顶部 [Bootstrap 和 Django]

在 docker 容器中创建 django 超级用户而不输入密码

如何将 django csrf 令牌直接嵌入 HTML?

如何使 Django 的开发服务器公开?

过滤查询参数

如何使用 ModelSerializer 显示所有模型字段?