So I created a CustomUserAdmin, so that I can use Email instead of using default username. This is my code.
model.py
class User(AbstractUser):
username = None
email = models.EmailField(unique=True)
USERNAME_FIELD = "email"
REQUIRED_FIELDS = []
objects = UserManager()
admin.py
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from core.models import User
from django.contrib.auth import get_user_model
class CustomUserAdmin(UserAdmin):
list_display = ("email", "first_name", "last_name", "is_staff")
search_fields = ("email", "first_name", "last_name")
ordering = ("email",)
add_fieldsets = (
(
None,
{
"classes": ("wide",),
"fields": (
"email",
"first_name",
"last_name",
"password1",
"password2",
),
},
),
)
admin.site.register(get_user_model(), CustomUserAdmin)
When I tried to add or modify a User in Admin Page, this Traceback appeared:
Internal Server Error: /admin/core/user/4/change/
Traceback (most recent call last):
File "D:\BaiTap\C#\fashion_shop\src\backend\env\lib\site-packages\django\contrib\admin\options.py", line 809, in get_form
return modelform_factory(self.model, **defaults)
File "D:\BaiTap\C#\fashion_shop\src\backend\env\lib\site-packages\django\forms\models.py", line 642, in modelform_factory
return type(form)(class_name, (form,), form_class_attrs)
File "D:\BaiTap\C#\fashion_shop\src\backend\env\lib\site-packages\django\forms\models.py", line 321, in __new__
raise FieldError(message)
django.core.exceptions.FieldError: Unknown field(s) (username) specified for User
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:\BaiTap\C#\fashion_shop\src\backend\env\lib\site-packages\django\core\handlers\exception.py", line 55, in inner
response = get_response(request)
File "D:\BaiTap\C#\fashion_shop\src\backend\env\lib\site-packages\django\core\handlers\base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "D:\BaiTap\C#\fashion_shop\src\backend\env\lib\site-packages\django\contrib\admin\options.py", line 688, in wrapper
return self.admin_site.admin_view(view)(*args, **kwargs)
ModelForm = self.get_form(
File "D:\BaiTap\C#\fashion_shop\src\backend\env\lib\site-packages\django\contrib\auth\admin.py", line 98, in get_form
return super().get_form(request, obj, **defaults)
File "D:\BaiTap\C#\fashion_shop\src\backend\env\lib\site-packages\django\contrib\admin\options.py", line 811, in get_form
raise FieldError(
django.core.exceptions.FieldError: Unknown field(s) (username) specified for User. Check fields/fieldsets/exclude attributes of class CustomUserAdmin.
I have tried many solutions such as
Unknown field(s) (username) specified for User. Check fields/fieldsets/exclude attributes of class CustomUserAdmin
or
Django3: ManyToMany field causes: Unknown field(s) (username) specified for User. Check fields/fieldsets/exclude attributes of class CustomUserAdmin
Although I have implemented required fields into the class like search_fields
, add_fieldsets
, etc. Even changed the order of the code. But it isn't work.
What should I do? Did I missed something?