Форум сайта python.su
Добрый день!
Изучаю django. Столкнулся со следующим вопросом.
Мне необходимо сделать страницу редактирования данных (и их сохранения после редактирования).
Делаю форму из модели по документации.
https://docs.djangoproject.com/en/1.3/topics/forms/modelforms/
Есть такой пример:
# Create a form to edit an existing Article. >>> a = Article.objects.get(pk=1) >>> f = ArticleForm(instance=a) >>> f.save()
Every form produced by ModelForm also has a save() method. This method creates and saves a database object from the data bound to the form. A subclass of ModelForm can accept an existing model instance as the keyword argument instance; if this is supplied, save() will update that instance.
Офлайн
lomachНе понимаю, а что тут собственно должно произойти? Какова логика таких действий?# Create a form to edit an existing Article. >>> a = Article.objects.get(pk=1) >>> f = ArticleForm(instance=a) >>> f.save()
>>> a = Article.objects.get(pk=1) >>> a.save()
Офлайн
Отредактированные данные же должны сохраньтся, если форму не сохранить , в БД изменения не запишутся.
Офлайн
buddhaИз вашего кода совершенно не ясно, как они собственно редактируются, именно этот момент Вы решили опустить, почему то
Отредактированные данные же должны сохраньтся, если форму не сохранить , в БД изменения не запишутся.
Офлайн
^.^ мда
Офлайн
buddhaДа, да! Я пиво пью и раков ем, не смотрел я кто чего запостил, извини.
^.^ мда
Офлайн
=)) всё ок
Офлайн
Не успел с работы домой добраться, а тут уже люди пиво пьют и раков едят. :)
Приятного аппетита! :)
Как тогда тупо сделать, чтобы форма получилась заполненной данными объекта с нужным мне ID?
Я вот этого понять не могу. Мне нужно сначала просто вывести заполненную для редактирования форму.
Офлайн
Не сильно быстрый путь, зато хорошо поймешь всё:
сначала эти две странички
https://docs.djangoproject.com/en/1.4/topics/forms/
https://docs.djangoproject.com/en/1.4/ref/forms/api/
и половинка этой(до параграфа Models formsets)
https://docs.djangoproject.com/en/1.4/topics/forms/modelforms/
там есть ответы на твои вопросы.
Попробуй сначала, если что пиши сюда код.
Офлайн
Спасибо.
Документацию и раньше читал. Кое-что упустил правда.
В итоге осилил. Все работает.
Код получился такой:
@login_required(login_url='/login/') def edit_element(request, id): if 'id' in request.GET and request.GET['id']: q = request.GET['id'] f = Main_menu.objects.get(pk=q) else: f = None return HttpResponse('Error: No id!') if request.method == 'POST': form = MenuForm(request.POST, instance=f) if form.is_valid(): form.save() return HttpResponseRedirect('/menu/') else: form = MenuForm(instance=f) title = "Редактирование" return render_to_response("menu_edit.html", {'title': title, 'form': form,}, context_instance=RequestContext(request))
Офлайн