gpt4 book ai didi

django - DRF CreateAPIView 中的条件语句

转载 作者:行者123 更新时间:2023-12-02 07:09:42 28 4
gpt4 key购买 nike

我想根据某些标准限制用户可以上传图片的类别。在下面的代码中,我可以在网站上执行我想要的操作。

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

最佳答案

DRF 提供 permission_classes限制特定用户。

权限.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

关于django - DRF CreateAPIView 中的条件语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32568771/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com