Найти - Пользователи
Полная версия: Как узнать изменилась ли model instance перед вызовом save()
Начало » Django » Как узнать изменилась ли model instance перед вызовом save()
1
test157
у меня есть model instance у которого ВОЗМОЖНО изменились какие-то поля. как мне сравнить со значениями хранимыми в БД до его сохранения? т.е. до вызова метода save()

такой вариант не работает, т.к. помоему сравнивает по полю primary key

    if movie == Movie.objects.get(id=movie.id):
print 1
а нужно сравнение по всем полям
chkur
Я делал “лог” так:
from django.core import serializers

def write_changes(request, data1, data2):
"""data1, data2 - строка таблицы до и после изменений"""

before_data = serializers.serialize( "python", (data1,))
after_data = serializers.serialize( "python", (data2,))

if before_data[0]['model']==after_data[0]['model'] and before_data[0]['pk']==after_data[0]['pk']:

for k in before_data[0]['fields'].keys():

if before_data[0]['fields'][k]!=after_data[0]['fields'][k]:
#запись в таблицу изменений полей
Пусть гуру поправят, если можно сделать проще и правильнее.
vaxXxa
Я бы ловил сигналы. Так проще.
http://docs.djangoproject.com/en/dev/topics/signals/
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB