'auth.User.groups: (fields.E304) Reverse accessor for 'User.groups' clashes with reverse accessor for 'UserManage.groups'
In my Django project I have a user_manage
app.
I create a model named UserManage
in my user_manage
app's model.py:
from django.db import models
from django.contrib.auth.models import AbstractUser
class UserManage(AbstractUser):
username = models.CharField(max_length=12)
Then I run:
$ python3 manage.py makemigrations
There comes the error:
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'.
Solution 1:[1]
Add the following to settings.py
:
AUTH_USER_MODEL = "users_management.UserManage"
More generally,
AUTH_USER_MODEL = 'YourAppName.YourClassName'
- YourAppName: This is the name of the app that will have the User Model
- YourClassName: This is the name of the class used inside the models.py file
Solution 2:[2]
Add this in the settings :
AUTH_USER_MODEL = 'APPNAME.User'
This way we are telling Django to use our custom model instead the default one. https://docs.djangoproject.com/en/2.2/topics/auth/customizing/#substituting-a-custom-user-model
Solution 3:[3]
Add this in the settings at the end of the code :
AUTH_USER_MODEL="users.CustomUser"
Solution 4:[4]
Add this setting.py
AUTH_USER_MODEL = "myapp.User"
Solution 5:[5]
Just add AUTH_USER_MODEL="your app name.User"
in settings.py
as shown in the code below
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',
},
]
Solution 6:[6]
I have added AUTH_USER_MODEL = 'YourAppName.YourClassName'
to setting but still had an other error during on python manage.py migrate
Traceback (most recent call last):
File "D:\Perso Work\Mr CYRILE\PUSH NOTIFICATION MOBILE AP\.env\lib\site-packages\django\core\management\base.py", line 398,
in execute
output = self.handle(*args, **options)
File "D:\Perso Work\Mr CYRILE\PUSH NOTIFICATION MOBILE AP\.env\lib\site-packages\django\core\management\base.py", line 89,
in wrapped
res = handle_func(*args, **kwargs) File "D:\Perso Work\Mr CYRILE\PUSH NOTIFICATION MOBILE AP\.env\lib\site-packages\django\core\management\commands\migrate.py", line 202,
in handle
pre_migrate_apps = pre_migrate_state.apps File "D:\Perso Work\Mr CYRILE\PUSH NOTIFICATION MOBILE AP\.env\lib\site-packages\django\utils\functional.py", line 48,
in __get__
res = instance.__dict__[self.name] = self.func(instance) File "D:\Perso Work\Mr CYRILE\PUSH NOTIFICATION MOBILE AP\.env\lib\site-packages\django\db\migrations\state.py", line 208,
in apps return StateApps(self.real_apps, self.models) File "D:\Perso Work\Mr CYRILE\PUSH NOTIFICATION MOBILE AP\.env\lib\site-packages\django\db\migrations\state.py", line 277,
in __init__
raise ValueError("\n".join(error.msg for error in errors))ValueError: The field admin.LogEntry.user was declared with a lazy reference to 'reviews.employee', but app 'reviews' doesn't provide model 'employee'.
The field reviews.Review.user was declared with a lazy reference to 'reviews.employee', but app 'reviews' doesn't provide model 'employee'.
Solution 7:[7]
The solution is to first add the following line into your settings.py-
AUTH_USER_MODEL="myproject.User"
Where myproject is your project name. If you again get error then run following commands in your main directory-
python manage.py makemigrations
python manage.py migrate
This worked for me
Solution 8:[8]
If above steps donĀ“t work, delete all migrations history and your database.
Then "makemigrations" and "migrate" like it was for the first time.
The User model must be created at beginning of the project, before firts migration.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | eykanal |
Solution 2 | |
Solution 3 | Arnab Das |
Solution 4 | |
Solution 5 | Eduard Grigoryev |
Solution 6 | Greko2015 GuFn |
Solution 7 | Harshit Sahu |
Solution 8 | Leo Geo |