Reputation: 26896
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'.
Upvotes: 169
Views: 149090
Reputation: 9
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.
Upvotes: 0
Reputation: 131
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
Upvotes: 13
Reputation: 157
Add this in the settings at the end of the code :
AUTH_USER_MODEL="users.CustomUser"
Upvotes: 8
Reputation: 47
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',
},
]
Upvotes: 2
Reputation: 26896
Add the following to settings.py
:
AUTH_USER_MODEL = "users_management.UserManage"
More generally,
AUTH_USER_MODEL = 'YourAppName.YourClassName'
Upvotes: 329
Reputation: 462
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
Upvotes: 31