У меня проблема с admin.py в приложении пользователя.Я пытался создать нового пользователя в админ-панели django, но я получил эту ошибку:
Unknown field(s) (username) specified for User. Check fields/fieldsets/exclude attributes of class UserAdmin.
Но поле username фактически не существует.и я создал собственный менеджер пользователей и установил REQUIRED_FIELDS = "email" в модели.
Как вы можете видеть, я добавил add_fieldsets внизу.ошибка исчезла, но для админ-панели все еще требуется имя пользователя вместо электронной почты.
UserAdmin:
class UserAdmin(UserBaseAdmin):
list_display = ["email", "first_name", "last_name", "is_active"]
list_filter = ["is_active", "is_admin", "is_staff"]
search_fields = ["first_name", "last_name", "email"]
ordering = ["email"]
add_fieldsets = (
(None, {"fields": ("first_name", "last_name", "email", "password")}),
("Permissions", {"fields": ("is_admin", "is_staff", "is_active")})
)
fieldsets = (
(None, {"fields": ("first_name", "last_name", "email", "password")}),
("Permissions", {"fields": ("is_admin", "is_staff", "is_active")})
)
filter_horizontal = []
admin.site.register(User, UserAdmin)
Модель:
class User(AbstractBaseUser, UserTimeStamp):
first_name = models.CharField(max_length=50, blank=False, null=False)
last_name = models.CharField(max_length=100, blank=False, null=False)
email = models.EmailField(unique=True, blank=False, null=False)
is_admin = models.BooleanField(default=False, blank=False, null=False)
is_staff = models.BooleanField(default=False, blank=False, null=False)
is_active = models.BooleanField(default=True, blank=False, null=False)
objects = UserManager()
USERNAME_FIELD = "email"
def has_perm(self, perm, obj=None):
return True
def has_module_perms(self, perm_label):
return True
Диспетчер пользователей:
class UserManager(BaseUserManager):
def get_queryset(self, *args, **kwargs):
return UserQueryset(self.model, using=self._db)
def create_user(self, email,password=None):
if not email:
raise ValueError("Users must have an email address.")
user = self.model(email=self.normalize_email(email))
user.set_password(password)
try:
user.save(using=self._db)
return user
except:
raise ValueError("Couldn't create user")