【发布时间】:2023-01-23 16:37:50
【问题描述】:
我有一个用 DRF 编写的视图集:
class MyViewSet(ModelViewSet):
serializer_class = MySerializer
queryset = models.MyClass.objects.all()
def get_serializer_class(self):
permission = self.request.user.permission
if permission=='owner' or permission=='admin':
return self.serializer_class
else:
return OtherSerializer
def perform_create(self, serializer):
permission = self.request.user.permission
if permission=='owner' or permission=='admin':
serializer.save()
else:
employee = models.Employee.objects.get(user=self.request.user)
serializer.save(employee=employee)
在这里,我在 get_serializer_class 和 perform_create 中都使用了以下语句,看起来像是重复代码:
permission = self.request.user.permission
if permission=='owner' or permission=='admin':
有没有办法写一次然后以某种方式将它用作 permission_class ?
【问题讨论】:
标签: python django django-rest-framework django-views django-permissions