2017-08-09 126 views
0

我有一個簡單的DB模式:自動保存到數據庫的Django

class testModel(models.Model): 
    modified_by = models.CharField(max_length=50, verbose_name="Modified by") 
    modify_date = models.DateTimeField(auto_now_add=True, auto_now=False) 
    week = models.DateField(verbose_name="Week date") 
    type = models.CharField(max_length=10, verbose_name="Type") 
    value = models.CharField(max_length=4, verbose_name="value") 

    def __unicode__(self): 
     return str(self.type) 

我想要做的就是保存每個動作到第二個表,例如testModel_history。

我知道我可以在第一張表的每次更改期間創建這樣的表並導入記錄,但我想問問您是否有更好的方法來執行此操作?

由於提前,

回答

0

如果你真的要保存的唯一的歷史動作使用Django簡單的歷史記錄。 https://django-simple-history.readthedocs.io/en/latest/usage.html

Allyou需要做的就是添加history = HistoricalRecords()你需要跟蹤

例如全系車型:

class testModel(models.Model): 
    modified_by = models.CharField(max_length=50, verbose_name="Modified by") 
    modify_date = models.DateTimeField(auto_now_add=True, auto_now=False) 
    week = models.DateField(verbose_name="Week date") 
    type = models.CharField(max_length=10, verbose_name="Type") 
    value = models.CharField(max_length=4, verbose_name="value") 

    history = HistoricalRecords() 

    def __unicode__(self): 
     return str(self.type) 
1

與繼承的模型嘗試:

class testModel2(testModel): 
    def __init__(testModelObj, self): 
     #for every field: self.field_name = testModelObj.field_name 

    class Meta: 
     db_table = 'your_db_table' #if you want a specific one 

此外改寫保存方法testModel:

#in class testModel 
def save(self): 
    testModel2(self).save() 
    super().save()