2016-02-28 94 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/