2017-08-09 84 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()