Я пытаюсь отслеживать изменения всякий раз, когда изменяется поле.Как отслеживать изменения при использовании update() в моделях Django
Я вижу изменения в истории администратора Django всякий раз, когда я использую метод .save(), но всякий раз, когда я использую метод .update(), он не записывает все, что я изменил в своем объекте.
Я хочу использовать update(), потому что он может изменять несколько полей одновременно. Это делает уборщик кода и более эффективный (один запрос, одна линии ...)
Сейчас я использую это:
u = Userlist.objects.filter(username=user['username']).update(**user)
Я могу увидеть все изменения, когда я
u = Userlist.objects.get(username=user['username'])
u.lastname=lastname
u.save()
Я также использую django-simple-history, чтобы увидеть change.setup.
Прискорбно, что нет декоратора, чтобы заставить сигнал такого поведения ... – mk2
Я не встречал никого. Старый хак работает (см. Мое обновление), но не рекомендуется –
Да, я сохранил поля, которые я менял в списке, а затем я повторил их, чтобы изменить один за другим. Наконец, я бы сохранил новый объект. Это немного дороже вычислительно дорого, и он менее чист, но мне нужно отслеживать изменения ... Спасибо, Моисей. – mk2