无法设置/读取Django简单历史更改原因



我正在为Django使用simple_history包,并希望记录用户是创建、更新还是删除模型对象。我想我应该使用历史变化的原因来达到这个目的,并在模型中

def save(...):
if not self.id:
self.id = uuid()
self.changeReason = 'create'
else:
self.changeReason = 'update'
super(MyModel, self).save(...)

当我保存模型时,这个"changeReason"字段似乎已设置(至少没有错误(,但当我尝试在.history.first((.instance.changeReason等测试用例中读取它时,它会抱怨字段"changeReason'不存在。history.first((调用有效,所以我确实有一个历史记录。

我在settings.py 中有SIMPLE_HISTORY_HISTORY_CHANGE_REASON_USE_TEXT_FIELD=True

我可能忽略了一些基本的东西,但我似乎不明白是什么。。。

谢谢,

我的坏。。。在模型中设置self.changeReason="create"是正确的做法。问题是在我的测试用例中对更改原因的检查不正确。

我检查了

self.assertEqual(<object>.history.first().instance.changeReason, 'create')

但应该是

self.assertEqual(<object>.history.first().history_change_reason, 'create')

通过测试的:(

以上答案对于检查changeReason是正确的;但是,记录是否被创建、更新或删除,默认情况下已经在history_type字段的历史表中进行了跟踪。

最新更新