TL;DR: Use the code from the Solution part at the end of the following answer.
Longer explanation: You see, as of Django 1.5, it's not enough to subclass Django's UserAdmin to be able to interact with swappable user models: you need to override respective forms as well.
If you jump to django.contrib.auth.admin source, you'll see that the UserAdmin's form and add_form have these values:
# django/contrib/auth/admin.py class UserAdmin(admin.ModelAdmin): ... form = UserChangeForm add_form = UserCreationForm Which point us to forms in django.contrib.auth.forms that do not respect swappable user models:
# django/contrib/auth/forms.py class UserCreationForm(forms.ModelForm): ... class Meta: model = User # non-swappable User model here. class UserChangeForm(forms.ModelForm): ... class Meta: model = User # non-swappable User model here. Solution: So, you should follow a great already existing answeranswer (don't forget to vote it up!) which boils down to this:
from django.contrib.auth import get_user_model from django.contrib.auth.admin import UserAdmin from django.contrib.auth.forms import UserCreationForm, UserChangeForm class MyUserChangeForm(UserChangeForm): class Meta: model = get_user_model() class MyUserCreationForm(UserCreationForm): class Meta: model = get_user_model() class MyUserAdmin(UserAdmin): form = MyUserChangeForm add_form = MyUserCreationForm admin.site.register(MyUser, MyUserAdmin) Hopefully, this would be fixed in the future releases of Django (here's the corresponding ticket in the bug tracker).