Не могу установить / прочитать 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')

Это прошло испытание:)

Другие вопросы по тегам