我试图在我的Django REST框架项目中添加批量删除,但被卡在视图中。py有人知道如何在我的项目中实现此功能吗?
这是我在www.example上的课 www.example.com :
class AssignmentViewSet(viewsets.ModelViewSet):
"""View for manage assignment APIs."""
serializer_class = serializers.AssignmentSerializer
queryset = Assgnment.objects.all()
authentication_classes = [TokenAuthentication]
permission_classes = [IsAuthenticated]
def get_queryset(self):
"""Retrieve recipes for authenticated user."""
return self.queryset.filter(user=self.request.user).order_by('-id')
def get_serializer_class(self):
"""Return the serializer class for request."""
if self.action == 'list':
return serializers.AssignmentSerializer
return self.serializer_class
def perform_create(self, serializer):
"""Create a Assignment."""
serializer.save(user=self.request.user)
以下是我的URL:
from rest_framework.routers import DefaultRouter
from assignment import views
router = DefaultRouter()
router.register('assignment', views.AssignmentViewSet)
router.register('tags', views.TagViewSet)
app_name = 'assignment'
urlpatterns = [
path('', include(router.urls)),
]
请让我知道,如果你需要更多的细节,我的项目
更新***
我尝试了这个方法,但没有工作:
class AssignmentViewSet(viewsets.ModelViewSet):
# ... existing code ...
@action(detail=False, methods=['delete'])
def delete_bulk(self, request):
"""Delete multiple assignments by ids."""
assignment_ids = request.data.get('ids', [])
self.queryset.filter(user=self.request.user, id__in=assignment_ids).delete()
return Response(status=status.HTTP_204_NO_CONTENT)
我的API有效负载:
curl -X 'DELETE' \
'http://127.0.0.1:8000/api/assignment/assignment/delete_bulk?ids=8,9' \
-H 'accept: */*' \
-H 'Authorization: Token 1376bfc2439f1347ab16b28fb9e83b83a4336984' \
-H 'X-CSRFTOKEN: x5CfIVresmUTbpG5GlPKAthmZ26WrWv3R5W0etOuhMm5Tbs0skwJMhxDFsT1KxKB'
1条答案
按热度按时间uyhoqukh1#
如果需要从query_params获取数据:
但在您的情况下,更好的方法是在体和序列化程序中处理。在你的序列化器中。py**:
在你的眼中py执行如下操作: