Ошибка при создании нового экземпляра модели в django admin.py - PullRequest
0 голосов
/ 05 мая 2019

У меня проблема с 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")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...