Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Как узнать изменилась ли model instance перед вызовом save() [RSS Feed]

#1 Май 10, 2010 04:23:14

test157
От:
Зарегистрирован: 2009-02-25
Сообщения: 54
Репутация: +  0  -
Профиль   Отправить e-mail  

Как узнать изменилась ли model instance перед вызовом save()

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

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

    if movie == Movie.objects.get(id=movie.id):
print 1
а нужно сравнение по всем полям



Отредактировано (Май 10, 2010 04:27:33)

Офлайн

#2 Май 10, 2010 11:11:41

chkur
От:
Зарегистрирован: 2010-01-07
Сообщения: 19
Репутация: +  0  -
Профиль   Отправить e-mail  

Как узнать изменилась ли model instance перед вызовом save()

Я делал “лог” так:

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]:
#запись в таблицу изменений полей
Пусть гуру поправят, если можно сделать проще и правильнее.



Офлайн

#3 Май 10, 2010 20:02:06

vaxXxa
От: Kyiv, Ukraine
Зарегистрирован: 2009-06-16
Сообщения: 278
Репутация: +  0  -
Профиль   Отправить e-mail  

Как узнать изменилась ли model instance перед вызовом save()

Я бы ловил сигналы. Так проще.
http://docs.djangoproject.com/en/dev/topics/signals/



Офлайн

  • Начало
  • » Django
  • » Как узнать изменилась ли model instance перед вызовом save()[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version