Не могу установить / прочитать Django простая причина изменения истории
Я использую пакет simple_history для Django и хотел бы записать, создает ли пользователь, обновляет или удаляет объект модели. Я думал, что для этой цели буду использовать причину изменения истории, а в models.py сделаю что-то вроде
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 () работает, поэтому у меня есть запись истории.
У меня есть SIMPLE_HISTORY_HISTORY_CHANGE_REASON_USE_TEXT_FIELD = True в settings.py
Я, наверное, пропускаю что-то простое, но не могу понять, что...
Спасибо,
1 ответ
Приведенный выше ответ является правильным для проверки changeReason
; однако независимо от того, была ли запись создана, обновлена или удалена, она уже отслеживается в таблице истории по умолчанию в history_type
поле.
Мое плохое... Установка self.changeReason = 'create' в модели - это то, что нужно делать. Проблема заключалась в неправильной проверке причины изменения в моем тестовом примере.
Я проверил
self.assertEqual(<object>.history.first().instance.changeReason, 'create')
но это должно быть
self.assertEqual(<object>.history.first().history_change_reason, 'create')
Это прошло испытание:)