Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django DRF CreateAPIView中的条件语句_Django_Serialization_Django Forms_Django Views_Django Rest Framework - Fatal编程技术网

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