我正在尝试在DRF中发送DELETE请求体。我知道默认情况下,DRF不支持批量操作,所以我正在使用django-rest-framework-bulk。
现在,根据教程,我确保只有当查询被过滤时才允许进行批量删除。我正在使用BulkModelViewset。
考虑以下JSON数组:
[{
"id": "1",
"first_name": "bruce",
"second_name": "banner",
"team": "avengers"
},
{
"id": "2",
"first_name": "clark",
"second_name": "kent",
"team": "Justice League"
}
{
"id": "3",
"first_name": "dead",
"second_name": "pool",
"team": "x force"
}]
现在我可以通过传递类似于以下过滤器来批量删除:
DELETE /api_name/?first_name=bruce,clark
但是我的前端开发人员想要发送一个请求正文,因为如果有100个需要删除的对象,他们不希望将这100个id作为逗号分隔字符串发送到查询参数中。
我是否可以像在POST、PUT等方法中一样发送要删除的请求正文呢?比如:
[{
"id": "1",
"first_name": "bruce",
"second_name": "banner",
"team": "avengers"
},
{
"id": "2",
"first_name": "clark",
"second_name": "kent",
"team": "Justice League"
}]
并且传递的对象将被删除。
我对REST原则还很陌生,我的整个逻辑可能存在错误。我试图在网上找到答案,但没有找到具体的内容。谢谢。
示例视图集:
class TeamViewSet(BulkModelViewSet):
serializer_class = TeamViewSerializer
queryset = TeamView.objects.all()
filter_backends = (DjangoFilterBackend,filters.OrderingFilter,)
filter_class =TeamViewFilter
ordering = ('id','second_name','first_name','team')
def allow_bulk_destroy(self, qs, filtered):
return filtered