source

auth.User.groups: (필드).E304) 'User.groups'의 역방향 접근자가 'UserManage.groups'의 역방향 접근자와 충돌함

manycodes 2023. 7. 20. 22:01
반응형

auth.User.groups: (필드).E304) 'User.groups'의 역방향 접근자가 'UserManage.groups'의 역방향 접근자와 충돌함

나의 장고 프로젝트에 나는 있습니다.user_manage앱.

다음 모델을 만듭니다.UserManage내 안에서user_manage앱의 모델.py:

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'.

다음 항목 추가settings.py:

AUTH_USER_MODEL = "users_management.UserManage" 

더 일반적으로 말하면,

AUTH_USER_MODEL = 'YourAppName.YourClassName'
  • 이름:사용자 모델이 포함될 앱의 이름입니다.
  • 클래스 이름:models.py 파일 내에서 사용되는 클래스의 이름입니다.

설정에 추가합니다.

AUTH_USER_MODEL = 'APPNAME.User'

이런 식으로 우리는 장고에게 기본 모델 대신 우리의 사용자 정의 모델을 사용하라고 말하고 있습니다.https://docs.djangoproject.com/en/2.2/topics/auth/customizing/ #사용자 정의 사용자 모델 배포

이 setting.py 을 추가합니다.AUTH_USER_MODEL = "myapp.User"

코드 끝에 있는 설정에 다음을 추가합니다.

AUTH_USER_MODEL="users.CustomUser"

해결책은 먼저 다음 행을 settings.py 에 추가하는 것입니다.

AUTH_USER_MODEL="myproject.User"

여기서 내 프로젝트는 당신의 프로젝트 이름입니다.다시 오류가 발생하면 기본 디렉토리에서 다음 명령을 실행합니다.

python manage.py makemigrations
python manage.py migrate

이것은 나에게 효과가 있었습니다.

그냥 추가AUTH_USER_MODEL="your app name.User"settings.py아래 코드에 나타난 바와 같이

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',
    },
]

위의 단계가 작동하지 않으면 모든 마이그레이션 기록과 데이터베이스를 삭제합니다.

그런 다음 처음처럼 "이행"하고 "이행"합니다.

처음 마이그레이션하기 전에 프로젝트 시작 시 사용자 모델을 만들어야 합니다.

언급URL : https://stackoverflow.com/questions/49189402/auth-user-groups-fields-e304-reverse-accessor-for-user-groups-clashes-with

반응형