说出我的 AUTH_USER_MODEL 是什么的正确方法是什么?
我有以下一套:
文件夹结构:
---后端
----- api
--------型号
----------- user.py
user.py 位于模型文件夹
中 settings.py中的:
AUTH_USER_MODEL = 'myapp.User'
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'api',
]
型号:
class User:
class Meta:
app_label = "myapp"
当我运行任何manage.py命令时,例如
python manage.py showmigrations
我收到此错误:
LookupError:没有安装带有“myapp”标签的应用。
问题解决方案是将 api 文件夹重命名为 myapp ,由于对型号名称的某些限制,我无法这样做。
或者将AUTH_USER_MODEL设置为 api.User ,但这会导致更改所有数据表名称,并且这些名称必须保持不变
以“ myapp _ ”开头的数据表名称不应更改
答案 0 :(得分:1)
鉴于您的文件夹结构如下:
backend
└── api
| ├── __init__.py
| ├── apps.py
| └── models
| ├── __init__.py
| └── user.py
├── manage.py
└── settings.py
然后您可以在backend/api/
中create an app config创建一个名为apps.py
的文件。在那里你可以重命名你的应用程序:
<强>后端/ API / apps.py 强>:
from django.apps import AppConfig
class MyAppConfig(AppConfig):
name = 'myapp'
verbose_name = _('My App')
此外,您需要将其添加到该文件夹中的__init__.py
:
<强>后端/ API / __初始化__吡啶强>:
default_app_config = 'api.apps.MyAppConfig'
此外,如果您想使用myapp.User
作为用户模型,还必须导入models
模块:
<强>后端/ API /模型/ __初始化__吡啶强>:
from .user import User
# or use "from .user import *" to import everything but then make sure you have __all__ defined in user.py
答案 1 :(得分:1)
解决方案是更改类MyAppConfig(AppConfig)中的AppConfig.label,因此,如果您更新答案,我会接受。更改名称以什么结尾都没有,它必须是代码所在模块的真实名称,但是实际上添加label ='arbitrary_name'