【问题标题】:Django Cookiecutter: How to import AUTH_USER_MODEL in config/settings/base.py?Django Cookiecutter:如何在 config/settings/base.py 中导入 AUTH_USER_MODEL?
【发布时间】:2017-08-18 06:55:06
【问题描述】:

我们知道,Django-Cookiecutter 对设置文件有不同的设置。常规的 from django.conf 导入设置 在这里不起作用。

我想引用设置目录下base.py文件中定义的自定义用户模型。有任何想法吗?

下面是我的项目布局:

repository/
    config/
        settings/
            __init__.py
            base.py # where the auth_user_model variable is defined
            local.py
            production.py
            test.py
    app_dir/
        users/
            __init__.py
            models.py # where the custom user model is stored

我还尝试直接从 users/models.py 导入自定义用户模型,如下所示:

from users.models import User

但出现以下错误:

RuntimeError: Model class users.models.User doesn't declare an 
explicit app_label and isn't in an application in INSTALLED_APPS.

【问题讨论】:

    标签: django cookiecutter-django


    【解决方案1】:

    尝试了以下方法,到目前为止似乎有效:

    from config.settings.base import AUTH_USER_MODEL
    

    【讨论】:

    • 我在测试中必须做出的一个相关更改是使用绝对导入路径而不是相对路径。例如 from ..views import (...) 给了我同样的运行时错误。
    【解决方案2】:
    from django.contrib.auth import get_user_model
    

    它将返回您在 base.py 中定义的 django 用户类

    编辑:

    from django.conf.settings import AUTH_USER_MODEL
    

    【讨论】:

    • 感谢您的回答。我正在使用 Django 1.10。我认为 get_user_model 和 AUTH_USER_MODEL 还是有区别的,不知何故?我正在尝试在另一个模型中引用当前的用户模型,所以使用 AUTH_USER_MODEL 可能会更好。
    • 我认为你应该阅读 django 文档。我补充说该代码是 django 的标准代码。 django.conf.settings 具有设置目录的所有 vars 值。
    猜你喜欢
    • 2021-01-22
    • 1970-01-01
    • 2016-02-02
    • 2015-07-28
    • 1970-01-01
    • 2020-04-29
    • 2020-03-21
    • 1970-01-01
    • 2022-07-19
    相关资源
    最近更新 更多