Сбор списка полей, которые были обновлены, когда django сохраняет запись модели - PullRequest
3 голосов
/ 28 октября 2010

Я создаю раздел «Что нового», в котором перечислены все изменения базы данных за последний день.За исключением недавнего предложения , я хочу использовать post_save или pre_save для захвата полей, которые были изменены, когда Django сохраняет запись модели.Я сохраню эти данные в другой таблице (с отметкой времени).Я знаю, что это возможно, потому что можно наблюдать поведение в приложении администратора - оно определяет, какие поля были изменены).

Как я могу сказать, приложение администратора использует формы.Но использование post_save или pre_save не получает никакой информации о формах.

Существует ли эффективный способ определить, какие поля были изменены?Нужно ли сравнивать каждое поле в модели с его текущим значением (pre_save), чтобы определить этот список?Любая помощь (с примерами кода) будет принята с благодарностью.

1 Ответ

1 голос
/ 28 октября 2010

Ответ здесь .Обычно вы можете кэшировать свои поля при инициализации объекта, а затем в сигнале post_save вы можете сравнить каждое поле с кэшированным значением ... или написать метод, который выполняет сравнение и возвращает только те поля, которые были изменены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...