DRF CreateAPIView 中的条件语句
Conditional statements in DRF CreateAPIView
我想根据特定条件限制用户可以将图片上传到哪些类别。在下面的代码中,我可以在网站上做我想做的事情。
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 Framework 中模仿它以在我的 API 中使用。有人碰巧知道怎么做吗?
提前致谢!
序列化器:
class PhotoCreateSerializer(serializers.ModelSerializer):
class Meta:
model = Photo
fields = [
'creator',
'photo',
'category',
]
查看:
class PhotoCreateAPIView(generics.CreateAPIView):
serializer_class = PhotoCreateSerializer
将此添加到您的 PhotoCreateAPIView:
def get_queryset(self):
if not self.request.user.edu_email:
return Category.objects.exclude(
title='University')
DRF提供permission_classes
限制特定用户
permission.py
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
viewsets.py
class PhotoCreateAPIView(viewsets.ModelViewSet):
queryset = Category.objects.all()
permission_classes = (PhotoUploadPermissions,)
serializer_class = PhotoCreateSerializer
我想根据特定条件限制用户可以将图片上传到哪些类别。在下面的代码中,我可以在网站上做我想做的事情。
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 Framework 中模仿它以在我的 API 中使用。有人碰巧知道怎么做吗?
提前致谢!
序列化器:
class PhotoCreateSerializer(serializers.ModelSerializer):
class Meta:
model = Photo
fields = [
'creator',
'photo',
'category',
]
查看:
class PhotoCreateAPIView(generics.CreateAPIView):
serializer_class = PhotoCreateSerializer
将此添加到您的 PhotoCreateAPIView:
def get_queryset(self):
if not self.request.user.edu_email:
return Category.objects.exclude(
title='University')
DRF提供permission_classes
限制特定用户
permission.py
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
viewsets.py
class PhotoCreateAPIView(viewsets.ModelViewSet):
queryset = Category.objects.all()
permission_classes = (PhotoUploadPermissions,)
serializer_class = PhotoCreateSerializer