我有一个扩展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
我在做什么错了?