Сохранение исходного значения атрибута в Django
Основной текст заметки
Иногда требуется знать предыдущее значение атрибута модели. Но Django не хранит эти значения - приходится делать самостоятельно.
Программный код
class CustomModel(models.Model)
...
# оригинальное значение атрибута
_original_field = None
def __init__(self, *args, **kwargs):
super(CustomModel, self).__init__(*args, **kwargs)
# сохраняем исходное значение атрибута
self._original_field = self.field
def save(self, force_insert=False, force_update=False, *args, **kwargs):
# проверяем изменилось ли значение атрибута
if self.field!= self._original_field :
# атрибут field изменился - ваша супер-логика
super(CustomModel, self).save(force_insert, force_update, *args, **kwargs)
# а этот шаг зависит от вашей логики
self._original_field = self.field
Заметка написана: 25.05.2020