У меня есть две модели «Пользователь» и «Роль». Ролевая модель выглядит следующим образом:
class Role(models.Model):
ADMIN = 1
INFORMATIC = 2
REFEREE = 3
SPONSER = 4
STAFF = 5
PLAYER = 6
CUSTOMER =7
VISITOR = 8
ROLE_CHOICES = (
(1, 'admin'),
(2, 'informatic'),
(3, 'referee'),
(4, 'sponser'),
(5, 'staff'),
(6, 'player'),
(7, 'customer'),
(8, 'visitor'),
)
id = models.PositiveSmallIntegerField(choices=ROLE_CHOICES, primary_key=True ,
default=VISITOR)
, а вот моя модель пользователя:
class User(AbstractBaseUser,PermissionsMixin):
username = models.CharField(max_length=150, unique=True, blank=True , null=True,)
password = models.CharField(max_length=100, null=True , blank=True)
roles = models.ManyToManyField(Role)
Теперь я создал несколько объектов ролей и некоторых пользователей и назначил некоторые роли некоторым пользователям. Теперь я хочу знать, как я могу определить, какой пользователь имеет какие роли? из запроса у меня есть пользователь. Я хочу знать, есть ли у пользователя роль, например, спонсора, и дает ли он ему некоторые разрешения. Как я могу проверить это?
РЕДАКТИРОВАТЬ когда я использую usrobj.roles.filter (), он возвращает что-то вроде этого:
<QuerySet [<Role: (2, 'informatic')>, <Role: (3, 'referee')>]>
и использование userobj.roles. фильтр (id = 1) возвращает так:
<QuerySet [<Role: (2, 'informatic')>]>
и, очевидно, это не то, что я хочу