2015-09-06 1 views
0

Je peux voir tous les objets supprimés lorsque je supprime un objet dans Django Admin avec Reversion installé. Mais je ne peux pas voir l'objet supprimé quand je le supprime dans ma vue auto-écrite (gerenic). (J'utilise le gestionnaire de contexte.Je peux voir les changements dans l'historique lorsque je mets à jour un objet dans mes vues génériques.)Comment écrire une révision pour Gerenic DeleteView visible dans l'admin (Django Reversion)?

Voici comment j'ai essayé de le faire (toutes les classes et méthodes ne sont pas modifiées):

class ModelDelete(DeleteView): 
    def delete(self, request, *args, **kwargs): 
     with transaction.atomic(), reversion.create_revision(): 
      reversion.set_user(request.user) 
      reversion.set_comment('Deleted') 
      return super(ModelDelete, self).delete(request, *args, **kwargs)) 

J'utilise Django 1.7.10 et Reversion 1.9.3.

Je ne trouve pas comment faire cela dans les docs. Qu'est-ce qui me manque? Je pense que c'est assez facile.

Répondre

1

La suppression d'un objet ne l'ajoute pas à une révision. Essayez d'enregistrer l'objet avant de le supprimer.

with transaction.atomic(), reversion.create_revision(): 
     obj = self.get_object() 
     obj.save() # save the object so it is added to the revision. 
     reversion.set_user(request.user) 
     reversion.set_comment('Deleted') 
     return super(ModelDelete, self).delete(request, *args, **kwargs)) 
+0

Est-ce que ce résultat dans l'affichage des objets dans la liste lorsque je clique sur « Récupérer MyModels supprimés » dans l'admin (pour la « histoire » est allé dans l'admin lorsque je supprime un objet)? – yofee

+1

L'objet devrait apparaître dans "Recover MyModels supprimé" si vous créez ou non une révision lors de la suppression. En créant une révision lors de sa suppression, vous consignez qui a supprimé l'objet. – Alasdair

+0

Merci! Maintenant, j'ai aussi vu que les objets supprimés sont visibles dans cette liste, à la fin. Au fait, 'self.object' n'est pas disponible dans' def delete'. – yofee