Django Найти различия в одном и том же экземпляре модели
Я искал и не думаю, что нашел свой ответ. Но я хочу иметь возможность находить различия в данных и иметь список имен столбцов, которые показывают это.
Например, у меня есть модель под названием my_model, которая имеет несколько столбцов.
object = my_model.objects.get(id=1)
# Perform edit some values.
old_object = my_model.objects.get(id=1)
object.save()
# Check for differences
model_fields = [field.name for field in my_model._meta.get_fields()]
filtered_list = filter(lambda field: getattr(object, field, None) != getattr(old_object, field, None), model_fields)
Целью этого является уведомление пользователя после того, как он сделал обновление на своей стороне, чтобы отправить ему электронное письмо с напоминанием о том, что он изменил все значения, которые он изменил.
Смог ответить на свой собственный вопрос. Преобразование двух объектов в словари. Я смог получить в итоге что-то вроде
dict1, dict2 = obj1.__dict__, obj2._dict__
changed_fields = {
'column_names': []
}
excluded_keys = '_state'
for k,v in dict1.items():
if k in excluded_keys:
continue
try:
if v != dict2[k]
changed_fields['column_names'].append(k)
except KeyError:
# Put error handling
continue