#Unknown field(s) (usable_password) specified for CustomUser

2 messages · Page 1 of 1 (latest)

hazy mica
#

I've been following the Django for Professionals book and I'm trying to add a user via the admin. Going to the add URL I get

FieldError at /admin/accounts/customuser/add/
Unknown field(s) (usable_password) specified for CustomUser. Check fields/fieldsets/exclude attributes of class CustomUserAdmin.

I'm unsure what to tinker with here. There is also django-allauth involved at this point, so I think if I just throw in some random exclude I might break that library.

# forms.py
from django.contrib.auth import get_user_model
from django.contrib.auth.forms import UserCreationForm, UserChangeForm


class CustomUserCreationForm(UserCreationForm):
    class Meta:
        model = get_user_model()
        fields = (
            "email",
            "username",
        )


class CustomUserChangeForm(UserChangeForm):
    class Meta:
        model = get_user_model()
        fields = (
            "email",
            "username",
        )
# admin.py
from django.contrib import admin
from django.contrib.auth import get_user_model
from django.contrib.auth.admin import UserAdmin

from .forms import CustomUserCreationForm, CustomUserChangeForm

CustomUser = get_user_model()


class CustomUserAdmin(UserAdmin):
    add_form = CustomUserCreationForm
    form = CustomUserChangeForm
    model = CustomUser
    list_display = [
        "email",
        "username",
        "is_superuser",
    ]


admin.site.register(CustomUser, CustomUserAdmin)
# models.py
from django.contrib.auth.models import AbstractUser


class CustomUser(AbstractUser):
    pass
#settings.py

AUTH_USER_MODEL = "accounts.CustomUser"
lusty ocean
#

You are not defining the fieldset for a custom user model, here is an update admin.py file class `CustomUserAdmin(UserAdmin):
add_form = CustomUserCreationForm
form = CustomUserChangeForm
model = CustomUser
list_display = [
"email", "username",
"is_superuser",
]

# Specify the fields to use in the admin panel
fieldsets = (
    (None, {"fields": ("username", "email", "password")}),
    ("Permissions", {"fields": ("is_staff", "is_superuser", "groups", "user_permissions")}),
    ("Important dates", {"fields": ("last_login", "date_joined")}),
)

add_fieldsets = (
    (None, {
        "classes": ("wide",),
        "fields": ("username", "email", "password1", "password2"),
    }),
)

`, then make your migration and it should work