Ответ 1
http://code.activestate.com/pypm/django-dirtyfields/
Отслеживает грязные/измененные поля экземпляра модели django.
У меня есть модель базы данных, которая обновляется на основе изменений в удаленных данных (через скребок HTML).
Я хочу сохранить поле под названием changed
- отметку времени, обозначающую, когда последний раз, когда значения модели изменились с того, что они были ранее (обратите внимание, что это отличается от auto_now
, поскольку эти поля обновляются каждый раз, когда модель save
).
Вот мой вопрос:
В методе модели save
существует ли простой способ определить, отличаются ли текущие значения экземпляра модели от значений в базе данных? Или есть ли какие-либо альтернативные методы, позволяющие легко сохранять временную метку changed
?
http://code.activestate.com/pypm/django-dirtyfields/
Отслеживает грязные/измененные поля экземпляра модели django.
Если вы сохраните свой экземпляр через форму, вы можете проверить form.has_changed()
.
Вы можете попытаться вычислить контрольную сумму значений записи при ее сохранении. Затем, когда вы прочтете его позже, пересчитайте контрольную сумму и посмотрите, не изменилось ли она. Возможно, функция crc32
в стандартном модуле Python zlib
. (Я не уверен, что это за производительность, поэтому вы можете изучить это.)
Мне кажется, что вы хотите, это сигналы: http://docs.djangoproject.com/en/1.2/topics/signals/
Вы можете использовать сигнал post_save
для обновления связанного поля в другой модели для сохранения предыдущего значения. Затем в следующий раунд вам нужно будет что-то сравнить.
В этой библиотеке есть следы поиска FK.