2010-12-07 60 views
3

我想使用http://docs.djangoproject.com/en/dev/topics/db/models/#model-inheritance來爲現有模型創建子類,以創建對原始表中的任何記錄進行的每個更改的完整歷史記錄。使用Django Model類繼承爲表創建審計日誌

 
class Foo: 
    data = models.TextField() 
    created_at = models.DateTimeField(auto_now_add=True) 
    updated_at = models.DateTimeField(auto_now=True) 

    def save(): 
    super(...) 
    audit = FooAuditLog.createFromFoo(self) 

class FooAuditLog(Foo): 
    history_for = models.ForeignKey(Foo) 

    def createFromFoo(foo): 
    ... #Create the auditlog entry from the original record. 

所以每次我創建或更新型的記錄「foo」的時候,我想借此美孚記錄的快照,並添加另一個進入FooAuditLog。我的目標是爲每個Foo記錄提供完整的修訂記錄,以便隨着時間的推移追蹤每條記錄所做的每一項更改。

這種方法的缺陷是什麼?如果存在與Foo的ForeignKey關係,是否需要擔心Foo和FooAuditLog之間的級聯刪除/更新?

+0

你最終做了什麼?我正在研究類似的解決方案。謝謝! – 2011-08-18 18:32:43

回答

3

爲什麼不使用諸如Audit Trail應用程序之類的東西?我無法真正看到繼承如何真正適合日誌所需的抽象。 Audit Trail在類中包含所有活動的簡單聲明。