Форум сайта python.su
Други, помогите!
Есть такая вьюха, она отображает форму модели с соответствующими данными. Хочу ее изменить и сохранить, но вместо обновленной информации, получаю полный клон модели, но с изменениями, которые вносил. Что я не так делаю?
p.s. поле name - primary key
def edit_user_view(request, ext): args = {} args.update(csrf(request)) args['username'] = auth.get_user(request) args['pbxuser'] = SipExtensions.objects.get(name=ext) if request.method == 'POST': form = SipExtensionsForm(request.POST or None, instance=args['pbxuser']) if form.is_valid(): form.save() return HttpResponseRedirect('/pbx/users/show/users/') else: args['form'] = SipExtensionsForm(instance=args['pbxuser']) return render_to_response('edit_user_view.html', args)
Офлайн
Fandalа вам вообще не приходило в голову, что так делать нельзя?
args = SipExtensions.objects.get(name=ext)
Офлайн
Если бы я знал, как делать нельзя, а как можно - я бы не спрашивал, а сразу сделал правильно и продолжил уныло кодить. Тем более сперва поискал в гугле информацию, попадалось несколько ссылок, где похожие решения есть, например вот:
http://stackoverflow.com/questions/3946036/how-do-i-update-an-instance-of-a-django-model-with-request-post-if-post-is-a-nes
Подскажите, пожалуйста, почему так делать нельзя и как делать можно?
Офлайн
Ну хотя бы потому, что get гарантированно работает по id (да и то не всегда), а по name, ну я ХЗ что там у вас за БД, но get всегда нужно обкладывать траями.
Офлайн
вообще, мне кажется, что вы не понимаете, что делаете вообще.
Например, вот это нахрена
args.update(csrf(request)) args['username'] = auth.get_user(request)
Офлайн
FishHookСпасибо учту. name у меня первичный ключ вместо id, я же это сказал перед листингом кода, согласен, правильнее будет это вложить в try когда будет работать основной функционал либо… Как сделать это правильно, без model.objects.get(pk)?
Ну хотя бы потому, что get гарантированно работает по id (да и то не всегда), а по name, ну я ХЗ что там у вас за БД, но get всегда нужно обкладывать траями.
Офлайн
FishHookargs.update(csrf(request)) - передает в шаблон токен
вообще, мне кажется, что вы не понимаете, что делаете вообще.Например, вот это нахрена
Отредактировано Fandal (Май 29, 2015 18:38:29)
Офлайн
Расшифруйте вот это
Fandal
вместо обновленной информации, получаю полный клон модели, но с изменениями, которые вносил
Офлайн
Fandalне надо так делать, читайте доку по джанге, там так не делают
gs = auth.get_user(request) -Эта строчка передает в шаблон имя пользователя
Офлайн
В общем, вопрос исчерпан, я когда тестировал в том числе менял и поле name, которое - есть первичный ключ, в таком случае создавался клон, а если менять другие поля - вьюха работает корректно.
Спасибо!
Офлайн