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
Вернуться на верх