Подтвердить что ты не робот

Обнаруживать, изменилась ли модель до вызова сохранения в Django

У меня есть модель базы данных, которая обновляется на основе изменений в удаленных данных (через скребок HTML).

Я хочу сохранить поле под названием changed - отметку времени, обозначающую, когда последний раз, когда значения модели изменились с того, что они были ранее (обратите внимание, что это отличается от auto_now, поскольку эти поля обновляются каждый раз, когда модель save).

Вот мой вопрос:

В методе модели save существует ли простой способ определить, отличаются ли текущие значения экземпляра модели от значений в базе данных? Или есть ли какие-либо альтернативные методы, позволяющие легко сохранять временную метку changed?

4b9b3361

Ответ 2

Если вы сохраните свой экземпляр через форму, вы можете проверить form.has_changed().

Ответ 3

Вы можете попытаться вычислить контрольную сумму значений записи при ее сохранении. Затем, когда вы прочтете его позже, пересчитайте контрольную сумму и посмотрите, не изменилось ли она. Возможно, функция crc32 в стандартном модуле Python zlib. (Я не уверен, что это за производительность, поэтому вы можете изучить это.)

Ответ 4

Мне кажется, что вы хотите, это сигналы: http://docs.djangoproject.com/en/1.2/topics/signals/

Вы можете использовать сигнал post_save для обновления связанного поля в другой модели для сохранения предыдущего значения. Затем в следующий раунд вам нужно будет что-то сравнить.