我有一个API,我需要过滤一些数据。我的用户会传递一个JSON,其中包含几个示例,我需要返回给他们,如果有或没有在我的数据库中。但我不知道如何让Django4在同一个JSON中发出几个POST请求(我猜由于他们只会获取信息,这将是几个“GET”请求,但是我需要在一个帖子里做)。我该怎么做呢?我甚至不知道怎么开始。
例如,POST请求可以是:
[
{
"name": "media1"
},
{
"name": "media2"
},
{
"name": "media3"
}
]
如果我有媒体1和3,但没有媒体2,API将返回以下内容:
[
{
"id": 0,
"name": "media1"
},
{
None
},
{
"id": 1,
"name": "media3"
}
]
这是我当前的视图集。我实现了一个过滤器,一次只能处理一个GET请求:
class MediasViewSet(viewsets.ModelViewSet):
queryset = Media.objects.all().order_by('name')
serializer_class = MediaSerializer
authentication_classes = [JWTAuthentication]
permission_classes = [IsAuthenticated]
def get_queryset(self, *args, **kwargs):
print(self.request)
queryset = super().get_queryset()
if(self.request.data.__contains__("name")):
query = self.request.data['name']
if query:
queryset = Media.objects.filter(name=query)
return queryset
这是我的媒体模型:
class Media(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
name = models.CharField(max_length=45)
def __str__(self):
return self.name
我的序列化器:
class MediaSerializer(serializers.ModelSerializer):
class Meta:
model = Mediafields = ['id', 'name', 'processed_status']
1条答案
按热度按时间rkue9o1l1#
经过一番努力,我终于找到了一个解决办法,我的想法如下:
我创建了另一个名为CheckMediasAPIView的视图并导入CreateAPIView,这样我就可以重写post方法。然后,我使用了reduce方法,对每个名称使用了OR逻辑运算符和过滤器。结果如下: