Django DRF CreateAPIView中的条件语句
我想限制哪些类别的用户可以上传图片基于某些标准。在下面的代码中,我可以在网站上做我想做的事情Django DRF CreateAPIView中的条件语句,django,serialization,django-forms,django-views,django-rest-framework,Django,Serialization,Django Forms,Django Views,Django Rest Framework,我想限制哪些类别的用户可以上传图片基于某些标准。在下面的代码中,我可以在网站上做我想做的事情 class PhotoUploadForm(forms.ModelForm): class Meta: model = Photo fields = ('photo', 'category') def __init__(self, *args, **kwargs): if not hasattr(self, 'request'):
class PhotoUploadForm(forms.ModelForm):
class Meta:
model = Photo
fields = ('photo', 'category')
def __init__(self, *args, **kwargs):
if not hasattr(self, 'request'):
self.request = kwargs.pop('request')
super(PhotoUploadForm, self).__init__(*args, **kwargs)
if not self.request.user.edu_email:
self.fields['category'].queryset = Category.objects.exclude(
title='University')
然而,我不知道如何在Django Rest框架中模拟这一点,以便在我的API中使用。有人知道怎么做吗
提前谢谢你
序列化程序:
查看:
将此添加到您的PhotoCreateAPIView:
def get_queryset(self):
if not self.request.user.edu_email:
return Category.objects.exclude(
title='University')
DRF提供了限制特定用户的权限
权限.py
viewsets.py
class PhotoCreateAPIView(generics.CreateAPIView):
serializer_class = PhotoCreateSerializer
def get_queryset(self):
if not self.request.user.edu_email:
return Category.objects.exclude(
title='University')
from rest_framework.permissions import IsAuthenticated
class PhotoUploadPermissions(IsAuthenticated):
""" write custom permissions here"""
def has_permission(self, request, view):
if not request.user.edu_email:
queryset = view.get_queryset()
category_exclude = queryset.exclude(title='University')
if category_exclude:
return True
else:
return False
class PhotoCreateAPIView(viewsets.ModelViewSet):
queryset = Category.objects.all()
permission_classes = (PhotoUploadPermissions,)
serializer_class = PhotoCreateSerializer