【发布时间】:2021-02-11 19:02:22
【问题描述】:
我需要检查 charfield 选择实例,代表权限的角色,但是我无法获得该实例
这里是models.py:
class User(AbstractUser):
ROLE_CHOICES = (
('ADMIN', 'admin'),
('USER', 'user'),
('MODERATOR', 'moderator'),
)
role = models.CharField(choices=ROLE_CHOICES, default=ROLE_CHOICES[1], max_length=500)
bio = models.CharField(max_length=500, blank=True, null=True)
password = models.CharField(max_length=128, blank=True, null=True)
username = models.CharField(max_length=50, blank=True, null=True, unique=True)
email = models.EmailField(unique=True)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['role']
查看权限函数:
def get_permissions(self):
print(self.request.user.role)
print(self.request.user.role)
print(self.request.user.role)
print(self.request.user.role)
print('vvvvvvvvvvvvvvvvvk')
if self.request.user.role == 'user':
print(self.request.user.role)
if self.request.user.role == 'USER':
print(self.request.user.role)
if self.request.user.role == ('USER', 'user'):
print(self.request.user.role)
if self.request.user.role in ['USER', 'user']:
print(self.request.user.role)
print('aaaaaaaaaaaaaa')
if self.action == 'create' or self.action == 'perform_create':
permission_classes = []
elif self.action == 'list' or self.action == 'retrieve':
permission_classes = [permissions.IsAuthenticated]
# elif self.action == 'list':
# permission_classes = [IsAboveUser]
elif self.action == 'destroy' or self.action == 'update' or self.action == 'partial_update':
permission_classes = [permissions.IsAuthenticated]
else:
permission_classes = [IsAdmin]
return [permission() for permission in permission_classes]
出来:
('USER', 'user')
('USER', 'user')
('USER', 'user')
('USER', 'user')
vvvvvvvvvvvvvvvvvk
所以注意通过检查
【问题讨论】:
标签: python-3.x django api django-rest-framework