Сохранение исходного значения атрибута в 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