Opened 11 years ago
Closed 11 years ago
#21616 closed Bug (fixed)
Manager isn't available; User has been swapped for 'myuser.MyUser'
Reported by: | Owned by: | nobody | |
---|---|---|---|
Component: | Uncategorized | Version: | 1.6 |
Severity: | Normal | Keywords: | swapped for |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
I just want to do something more when the password is set for user.
So the following line is added to settings.py:
AUTH_USER_MODEL='myuser.MyUser'
Here is myuser/models.py:
from django.db import models from django.contrib.auth.models import AbstractUser # Create your models here. class MyUser(AbstractUser): def set_password(self, raw_password): AbstractUser.set_password(raw_password) print('raw_password =', raw_password)
And myuser/admin.py:
from django.contrib import admin from django.contrib.auth.admin import UserAdmin from django.contrib.auth.forms import UserCreationForm, UserChangeForm from django.contrib.auth.models import User from myuser.models import MyUser # Register your models here. class MyUserCreationForm(UserCreationForm): class Meta: model = MyUser class MyUserChangeForm(UserChangeForm): class Meta: model = MyUser class MyUserAdmin(UserAdmin): form = MyUserChangeForm add_form = MyUserCreationForm admin.site.register(MyUser, MyUserAdmin)
When I'm tring to register a new user, the following error is encountered:
Manager isn't available; User has been swapped for 'myuser.MyUser'.
So what can I do to fix it? thanks greatly. I'm using 1.6.1 now.
Change History (2)
comment:1 by , 11 years ago
Type: | Uncategorized → Bug |
---|
comment:2 by , 11 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
Now I know what's happen. django.contrib.auth.models.User can not be used when customized user model is installed.
Any usage of django.contrib.auth.models.User but not django.contrib.auth.get_user_model will cause this error.
For myself, I found django-registration use django.contrib.auth.models.User in forms.py. These forms will raise the error.
After replace User class with the result of get_user_model, all things work fine.
A simplified version of myuser/admin.py has been tried too, same error occuried.