Betrachten Sie die Quelle
und Dokumentation
für deliciouspie sieht es so aus, als müssten Sie zwei Funktionen überschreiben von ModelResource
(die MongoEngineResource
erbt
):
-
obj_delete
wodurch das Objekt gelöscht wird. -
delete-detail
die bei einer DELETE-Anforderung aufgerufen wird undobj_delete
aufruft gibt dann204 No Content
zurück oder404 Not Found
Ich habe nicht mit Tastypie gearbeitet, also ist das alles ein Blick auf die Dokumentation, aber es ist zumindest ein Ausgangspunkt. Sie müssen Ihrer Klasse so etwas antun:
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()