Преглеждайки източника
и документация
за tastypie, изглежда, че ще трябва да замените две функции от ModelResource
(който MongoEngineResource
наследява
):
-
obj_delete
което изтрива обекта. -
delete-detail
който се извиква при заявка DELETE и извикваobj_delete
след това връща204 No Content
или404 Not Found
Не съм работил с tastypie, така че това е всичко от разглеждане на документацията, но е поне отправна точка. Ще трябва да направите нещо подобно на вашия клас:
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()