MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Tastypie gibt Daten von DELETE-Anfragen zurück?

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 ):

  1. obj_delete wodurch das Objekt gelöscht wird.

  2. delete-detail die bei einer DELETE-Anforderung aufgerufen wird und obj_delete aufruft gibt dann 204 No Content zurück oder 404 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()