Xem xét nguồn
và tài liệu
đối với ngonypie, có vẻ như bạn sẽ cần ghi đè hai chức năng trong tổng số ModelResource
(mà MongoEngineResource
kế thừa
):
-
obj_delete
sẽ xóa đối tượng. -
delete-detail
được gọi theo yêu cầu DELETE và gọiobj_delete
sau đó trả về204 No Content
hoặc404 Not Found
Tôi chưa làm việc với Deliciousypie vì vậy tất cả đều là từ việc xem tài liệu, nhưng ít nhất nó là một điểm khởi đầu. Bạn sẽ cần thực hiện một điều gì đó như thế này với lớp học của mình:
class SimpleResource(resources.MongoEngineResource):
class Meta:
queryset = Simple.objects.all()
resource_name = 'simple'
allowed_methods = ('get', 'put', 'post', 'delete', 'patch')
always_return_data = True
def obj_delete(self, bundle, **kwargs):
try:
# get an instance of the bundle.obj that will be deleted
deleted_obj = self.obj_get(bundle=bundle, **kwargs)
except ObjectDoesNotExist:
raise NotFound("A model instance matching the provided arguments could not be found.")
# call the delete, deleting the obj from the database
super(MongoEngineResource, self).obj_delete(bundle, **kwargs)
return deleted_obj
def delete_detail(self, request, **kwargs):
bundle = Bundle(request=request)
try:
# call our obj_delete, storing the deleted_obj we returned
deleted_obj = self.obj_delete(bundle=bundle, **self.remove_api_resource_names(kwargs))
# build a new bundle with the deleted obj and return it in a response
deleted_bundle = self.build_bundle(obj=deleted_obj, request=request)
deleted_bundle = self.full_dehydrate(deleted_bundle)
deleted_bundle = self.alter_detail_data_to_serialize(request, deleted_bundle)
return self.create_response(request, deleted_bundle, response_class=http.HttpNoContent)
except NotFound:
return http.HttpNotFound()