2016-02-28 64 views
0

后不会创建一个优化版本我有2类:型号删除外键模型对象(Django的逆转)

class ContactInternal(models.Model): 
    name = models.CharField(max_length=80) 
SysAppApp = apps.get_app_config('SysApp') 
SysAppModel = SysAppApp.models 
reversion.register(ContactInternal, follow=["fk_contactinternal_sysapp"]) 
reversion.register(SysAppModel) 

# SysApp from another app called 'SysApp' 
class SysApp(models.Model): 
    name = models.CharField(max_length=80) 
    internalcontact = models.ForeignKey(ContactInternal, related_name='fk_contactinternal_sysapp', null=True, verbose_name="Internal Contact",blank=True,on_delete=models.SET_NULL) 

这是大多数情况下正常工作。例如当我对ContactInternal进行更改时,将向SysApp发布新版本。很满意它的工作原理。

但是,如果我删除了从SysApp.internalcontact链接的记录,则不会为SysApp创建任何版本。

实际上,我想要实现的是获取SysApp的最后修改日期的时间戳以及哪个用户(不需要回滚)。我想知道如何使用django-reversion?还是有另一种方法来实现这一目标?

  • 注意:SysApp中还有另外一个领域,即M2M,我也想达到同样的结果。
+0

谢谢@ ilse2005 – DSO

回答

0

实测值的溶液:

有需要的3个步骤: 1)在settings.py 2添加 'reversion.middleware.RevisionMiddleware' 到MIDDLEWARE_CLASSES)创建一个pre_delete信号函数来查找SysApp对象)SysApp OBJ

一些交代 3)显式调用保存(: 1)加入中间件到模型中的任何更改将被添加到修订历史 2)使用pre_delete信号找到SysApp对象(父母) 3)调用save()来强制Django的逆转,以创建修订

一些参考: Django的返文档:http://django-reversion.readthedocs.org/en/latest/api.html 简单的例子使用信号:http://www.koopman.me/2015/01/django-signals-example/