Reputation: 323
I have two models, abstract user and admin, linked onetoonefield. I want to add permissions for admin. I registered in meta permissions, but they are not saved or created in the database. What do I need to do? When I call
admin.has_perm ('MoveOnApp.register_partner')
I get the error
'Admin' object has no attribute 'has_perm'
class AbstractUser(AbstractBaseUser, PermissionsMixin):
"""Создал абстрактоного юзера от которого будут унаследованны остальные юзеры"""
phone_number = models.CharField(
_('phone number'),
max_length=14,
unique=True,
help_text='Enter your phone number',
)
email = models.EmailField(_('email address'), blank=True, unique=True)
created = models.DateTimeField(_('date joined'), default=datetime.datetime.now())
USERNAME_FIELD = 'phone_number'
EMAIL_FIELD = 'email'
REQUIRED_FIELDS = ['email']
objects = BaseManager()
is_superuser = None
class Meta:
verbose_name = _('user')
verbose_name_plural = _('users')
class Admin(models.Model):
"""Создаю модель администратора, наследованную от AbstractUser"""
user = models.OneToOneField(AbstractUser, on_delete=models.CASCADE, primary_key=True)
company_name = models.CharField(
_('company name'),
max_length=150,
)
logo_url = models.ImageField(
upload_to='img/logo'
)
first_name = models.CharField(
_('first name'),
max_length=50
)
last_name = models.CharField(
_('last name'),
max_length=50,
)
# Флажок, такие права доступа рекомендует делать документация. Есть еще варианты но этот мне кажется самым удобным
is_admin = models.BooleanField(
_('admin status'),
default=True
)
objects = BaseManager()
class Meta:
permissions = (
("register_partner", "Can register partner"),
)
Upvotes: 1
Views: 214
Reputation: 86
Your Admin
model is a basic model that has a user, but is not an user itself, to access its user-related properties you need to access the user
attribute, like admin.user.has_perm()
.
Upvotes: 1