какую сторону изменилось поле (статус объекта).
Если использовать django.db.models.signals.post_save то там приходит готовая уже сохранённая модель и фиг знает что было раньше до сохранения.
Смотрю свой старый проект там была аналогичная задача которую я решил так.
class ObjectModel(models.Model):
status = models.PositiveIntegerField('Status', choices=[...])
def __init__(self, *args, **kwargs):
super(ObjectModel, self).__init__(*args, **kwargs)
self.__old_status = self.status
def save(self, **kwargs):
super(ObjectModel, self).save(**kwargs)
if not self.__old_status == self.status:
if self.__old_status == 1:
...
elif self.__old_status == 2:
...
То есть в конструкторе я сохраняю текущее состоние статуса а в методе save сравниваю ПОСЛЕ сохранения.
В общем работает но чувствую костыльность. Может всё-таки есть способ в эвенте это обтаботать?
попробуй django-model-utils, там есть FieldTracker
Обсуждают сегодня