Форум сайта python.su
у меня есть model instance у которого ВОЗМОЖНО изменились какие-то поля. как мне сравнить со значениями хранимыми в БД до его сохранения? т.е. до вызова метода save()
такой вариант не работает, т.к. помоему сравнивает по полю primary key
if movie == Movie.objects.get(id=movie.id):
print 1
Отредактировано (Май 10, 2010 04:27:33)
Офлайн
Я делал “лог” так:
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]:
#запись в таблицу изменений полей
Офлайн
Я бы ловил сигналы. Так проще.
http://docs.djangoproject.com/en/dev/topics/signals/
Офлайн