2013-04-04 2 views
-1

Я объявил сигнал для модели UserProfile, которая обновляет некоторые другие поля. Сохраненные данные поступают из веб-службы.Обновить другие поля во время сохранения

post_save.connect(user_profile_update, sender=UserProfile) 

в user_profile_update, я сделал это:

profile = get_object_or_404(UserProfile, user=instance) 
profile.province = xml.duzeltilmisil #this comes from a web service 
profile.save() 

и я получил эту ошибку:

'NoneType' object is not callable 
profile.save() 

Там является другая ошибка, но то, что я сделал также рекурсивный. Когда я обновляю UserProfile, он должен снова запускать user_profile_update.

Есть ли разумный способ обновить эти поля во время сохранения?

+0

отключить сигнал, и посмотреть, если ошибка все еще происходит – karthikr

+0

karthikr, пользователь вводит почтовый адрес, как обычный текст, вебсервис разбирает его, и это дает мне город, район и т. д. информацию об адресе, и я хочу сохранить эту информацию сразу после обновления. поэтому я думаю, что мне нужен этот сигнал. если я отключу сигнал, я не получу никакой ошибки, но адрес не будет разобран. – cem

+0

Зачем вам нужен сигнал для синтаксического анализа? Вы можете справиться с этим лучше с вашего взгляда. Сигналы хороши только для небольших обновлений, а не для реализации логики – karthikr

ответ

0

Поскольку вы анализируете адрес, это лучший подход для обработки разбора в представлении, а не как сигнал.

Сигналы в норме используются для небольших обновлений для других моделей. ,

Таким образом, код может быть:

profile = get_object_or_404(UserProfile, user=instance) 
profile.province = xml.duzeltilmisil #this comes from a web service 

//parse the address here, and then save the models 
profile.save() 
Смежные вопросы