Kijkend naar de bron
en documentatie
voor Tastypie lijkt het alsof je twee functies moet overschrijven van ModelResource
(die MongoEngineResource
erft
):
-
obj_delete
die het object verwijdert. -
delete-detail
die wordt aangeroepen op een DELETE-verzoek enobj_delete
. aanroept retourneert vervolgens een204 No Content
of404 Not Found
Ik heb niet met Tastypie gewerkt, dus dit komt allemaal door de documentatie te bekijken, maar het is in ieder geval een startpunt. Je moet zoiets als dit met je klas doen:
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()