auth.User.groups:(fields.E304)'User.groups'的反向访问者与'UserManage.groups'的反向访问者冲突

air*_*aft 34 python django

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

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

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

class UserManage(AbstractUser):
    username = models.CharField(max_length=12)
Run Code Online (Sandbox Code Playgroud)

然后我跑:

$ python3 manage.py makemigrations
Run Code Online (Sandbox Code Playgroud)

出现错误:

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'.
Run Code Online (Sandbox Code Playgroud)

air*_*aft 57

感谢@ABDULNIYASPM

我添加:

AUTH_USER_MODEL = "users_management.UserManage" 
Run Code Online (Sandbox Code Playgroud)

settings.py它工作.

  • 如果我需要先迁移怎么办?即:... makemigrations 用户?如果没有 AUTH_USER_MODEL 我将收到“冲突”错误。使用 AUTH_USER_MODEL:“AUTH_USER_MODEL 引用尚未安装的型号 '%s'” % settings.AUTH_USER_MODEL (2认同)

Aja*_*lar 15

在设置中添加:

AUTH_USER_MODEL = 'APPNAME.User'
Run Code Online (Sandbox Code Playgroud)

这样,我们告诉Django使用我们的自定义模型,而不是默认模型。 https://docs.djangoproject.com/zh-CN/2.2/topics/auth/customizing/#substituting-a-custom-user-model

  • 请编辑您的答案,以添加有关您的代码如何工作以及如何解决OP问题的说明。许多StackOverflow用户是新手,他们不会理解您发布的代码,因此不会从您的答案中学习。 (2认同)

小智 12

解决方案是首先将以下行添加到您的settings.py-

AUTH_USER_MODEL="myproject.User"
Run Code Online (Sandbox Code Playgroud)

其中 myproject 是您的项目名称。如果再次出现错误,请在主目录中运行以下命令 -

python manage.py makemigrations
python manage.py migrate
Run Code Online (Sandbox Code Playgroud)

这对我有用


Rav*_*ara 10

添加此设置.py AUTH_USER_MODEL = "myapp.User"

  • 答案与已经接受的答案相同:/sf/answers/3443266571/ (4认同)

小智 8

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

AUTH_USER_MODEL="users.CustomUser"
Run Code Online (Sandbox Code Playgroud)