Groups: (fields.E304)‘ User.groups’的反向访问器与‘ UserManage.groups’的反向访问器发生冲突

在我的 Django 项目中,我有一个 user_manage应用程序。

我在我的 user_manage应用程序的 model.py 中创建了一个名为 UserManage的模型:

from django.db import models
from django.contrib.auth.models import AbstractUser


class UserManage(AbstractUser):
username = models.CharField(max_length=12)

然后我跑了:

$ python3 manage.py makemigrations

错误来了:

ERRORS:
auth.User.groups: (fields.E304) Reverse accessor for 'User.groups' clashes with reverse accessor for 'UserManage.groups'.
HINT: Add or change a related_name argument to the definition for 'User.groups' or 'UserManage.groups'.
auth.User.user_permissions: (fields.E304) Reverse accessor for 'User.user_permissions' clashes with reverse accessor for 'UserManage.user_permissions'.
HINT: Add or change a related_name argument to the definition for 'User.user_permissions' or 'UserManage.user_permissions'.
users_management.UserManage.groups: (fields.E304) Reverse accessor for 'UserManage.groups' clashes with reverse accessor for 'User.groups'.
HINT: Add or change a related_name argument to the definition for 'UserManage.groups' or 'User.groups'.
users_management.UserManage.user_permissions: (fields.E304) Reverse accessor for 'UserManage.user_permissions' clashes with reverse accessor for 'User.user_permissions'.
HINT: Add or change a related_name argument to the definition for 'UserManage.user_permissions' or 'User.user_permissions'.
99748 次浏览

settings.py中加入以下内容:

AUTH_USER_MODEL = "users_management.UserManage"

一般来说,

AUTH_USER_MODEL = 'YourAppName.YourClassName'
  • YourAppName : 这是具有用户模型的应用程序的名称
  • YourClassName : 这是 Models.py文件中使用的类的名称

在设置中添加以下内容:

AUTH_USER_MODEL = 'APPNAME.User'

通过这种方式,我们告诉 Django 使用我们的自定义模型,而不是默认模型。 Https://docs.djangoproject.com/en/2.2/topics/auth/customizing/#substituting-a-custom-user-model

只需在 settings.py中添加 AUTH_USER_MODEL="your app name.User",如下面的代码所示

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
AUTH_USER_MODEL="myproject.User"
    

# Password validation
# https://docs.djangoproject.com/en/2.2/ref/settings/#auth-password-validators
    

AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]

在代码末尾的设置中添加以下内容:

AUTH_USER_MODEL="users.CustomUser"

添加这个设置 AUTH_USER_MODEL = "myapp.User"

解决方案是首先在 setings.py-中添加以下代码行

AUTH_USER_MODEL="myproject.User"

其中我的项目是你的项目名称。 如果您再次得到错误,然后运行以下命令在您的主目录-

python manage.py makemigrations
python manage.py migrate

这招对我很管用

如果上述步骤不起作用,请删除所有迁移历史记录和数据库。

然后像第一次那样“移民”和“迁徙”。

User 模型必须在项目开始时创建,在首次迁移之前。