Невозможно использовать наборы файлов UserAdmin с моделью пользователя cutom - PullRequest
0 голосов
/ 06 августа 2020

Я попытался настроить Django User, который работал нормально, но я потерял такие вещи, как user_permissions. У меня нет окна пользовательских разрешений, в котором я могу дать разрешения типа «можно добавить продукт, можно удалить корзину» и т. Д. c. Я пробовал это:

from django.contrib.auth.admin import UserAdmin

fieldsets = UserAdmin.fieldsets + ('Custom fields set', {'fields': ('email', 'staff')}),

и

UserAdmin.fieldsets += ('Custom fields set', {'fields': ('email', 'staff')}),

, но у меня это не сработало. Если я попытаюсь добавить user_permissions в наборы полей, я получаю сообщение об ошибке «Unknown field 'user_permissions' specified '».

Нужно ли мне определять поля user_permissions?

class UserManager(BaseUserManager):
    def create_user(self,email,password=None,is_active=True,is_staff=False,is_admin=False):
        if not email:
            raise ValueError("Users must have email")
        if not password:
            raise ValueError("Users must have password")
        user_obj = self.model(
        email = self.normalize_email(email)
        )
        user_obj.staff = is_staff
        user_obj.admin = is_admin
        user_obj.active = is_active
        user_obj.set_password(password)  #inbuild hashing
        user_obj.save(using = self._db)
        return user_obj

    def create_staffuser(self,email,password=None):
        user = self.create_user(email,password=password,is_staff=True)
        return user

    def create_superuser(self,email,password=None):
        user = self.create_user(email,password=password,is_staff=True,is_admin=True)
        return user

class User(AbstractBaseUser):
    email    = models.EmailField(unique=True,max_length=255)
    # full_name= models.CharField(max_length=100)
    active   = models.BooleanField(default=True)
    staff    = models.BooleanField(default=False)
    admin    = models.BooleanField(default=False)
    timestamp= models.DateTimeField(auto_now_add=True)
    # confirmed= models.BooleanField(default=False) #confirmed email?

    USERNAME_FIELD  = 'email'
    REQUIRED_FIELDS = []
    objects = UserManager()

    def __str__(self):
        return self.email

    def get_full_name(self):
        return self.email

    def has_perm(self,perm,obj=None):
        return True

    def has_module_perms(self,app_label):
        return True

Вот как я админ смотрит в данный момент. введите описание изображения здесь

1 Ответ

1 голос
/ 06 августа 2020

Вы должны использовать класс PermissionsMixin при создании пользовательской модели пользователя

from django.contrib.auth.models import AbstractBaseUser, <b>PermissionsMixin</b>


class User(<b>AbstractBaseUser, PermissionsMixin</b>):
    # your fields
...