我有一个简单的数据库架构:
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 :(得分: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中重写save方法:
#in class testModel
def save(self):
testModel2(self).save()
super().save()
答案 1 :(得分: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)