@vikholodov

Как отследить изменение в поле админки?

Нужно отследить изменения статуса заказа в модели Order, переопределяю save, но не могу понять как отследить изменилось ли значение поля, иначе при каждом сохранении будет срабатывать функция, даже если значение поля не менялось
def save_model(self, request, obj, form, change):
        status = form.cleaned_data['status']
        print(status)
        super(OrderAdmin, self).save_model(request, obj, form, change)
  • Вопрос задан
  • 386 просмотров
Решения вопроса 1
@Sovetnikov
технический директор pulsprodaj.ru
1. В Django 1.8 в модели можно переопределить статичный метод from_db, который вызывается когда модель загружена из БД.
В этот момент сохранять начальное значение свойства.
2. До Django 1.8 начальное значение можно получать в __init__ модели.
3. Зачитывать в pre_save сигнале объект из БД и делать сравнение с тем что у вас есть, но в БД тутп оявляется лишний запрос...

Ешё учитывайте, что между тем как вы загрузили объект из БД и начинаете его сохранять, в БД его могли уже изменить ... п.3 с этим справится.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы