Django:bulk_destroy返回“ 400:错误的请求”

时间:2019-06-28 08:01:34

标签: django

我有一个扩展MyModelViewset的Django视图集MultipleDBModelViewSet(属于名为django-rest-framework-bulk的第三方项目的一部分):

class MultipleDBModelViewSet(BulkModelViewSet):
    def get_queryset(self):
        try:
            multiple_ids = json.loads(self.request.query_params.get("ids"))
        except (TypeError, json.decoder.JSONDecodeError):
            multiple_ids = None
        if not multiple_ids:
            return self.get_serializer_class().Meta.model.objects.all()
        else:
            return self.get_serializer_class().Meta.model.objects.filter(pk__in=multiple_ids)

    def list(self, request, *args, **kwargs):
        return super().list(request, *args, **kwargs)
    ...
    def destroy(self, request, *args, pk=None, **kwargs):
        return super().destroy(request, *args, pk=pk, **kwargs)

    def bulk_destroy(self, request, *args, **kwargs):
        ids = json.loads(request.query_params.get("ids"))
        if not ids:
            return super().destroy(request, *args, pk=kwargs.pop("pk"), **kwargs)
        else:
            return super().bulk_destroy(request, *args, **kwargs)

基本视图集包含以下在MyModelViewset中不会被覆盖的方法:

def bulk_destroy(self, request, *args, **kwargs):
    ids = json.loads(request.query_params.get("ids"))
    if not ids:
        return super().destroy(request, *args, pk=kwargs.pop("pk"), **kwargs)
    else:
        return super().bulk_destroy(request, *args, **kwargs)

我假设此方法意味着我可以传递一个名为ids的参数,并且所有带有那些ids的对象都将被删除?

我尝试将删除请求发送到关联的URL:

v1/mymodel?ids=["4cea187e-56af-439c-96a7-e001d85c5000","3d7bd2ac-bc27-4a1b-acfd-9b651852114e"] ->这将返回200响应,并且行为类似于GET请求

v1/mymodel?ids=["4cea187e-56af-439c-96a7-e001d85c5000","3d7bd2ac-bc27-4a1b-acfd-9b651852114e"]/ ->这将返回400个响应“错误的请求”

具有这些ids

MyModels存在于我的数据库中,我可以删除具有以下内容的单个MyModel:}/v1/mymodel/4cea187e-56af-439c-96a7-e001d85c5000

我在做什么错了?

0 个答案:

没有答案