Ticket #4572: form_for_instance_patch.txt

File form_for_instance_patch.txt, 1.3 KB (added by toddobryan@…, 17 years ago)

patch including an extra paragraph of explanation for form_for_instance

Line 
1Index: /home/tobryan1/workspace/django/docs/newforms.txt
2===================================================================
3--- /home/tobryan1/workspace/django/docs/newforms.txt (revision 5478)
4+++ /home/tobryan1/workspace/django/docs/newforms.txt (working copy)
5@@ -1617,6 +1617,28 @@
6 this data is not bound to the form. You will need to bind data to the
7 form before the form can be saved.
8
9+So, to edit an object already in the database, use the following pattern. In
10+the GET branch of your view, instantiate a form using ``form_for_instance`` and
11+display it on the page. In the POST branch, again use ``form_for_instance``, and
12+then bind the data to the form. Here's a short example:
13+
14+ #typical view pattern
15+ def edit_foo_by_id(request, foo_id):
16+ foo = Foo.objects.get_object_or_404(id=foo_id)
17+ FooForm = form_for_instance(foo)
18+ if request.POST:
19+ data = request.POST.copy()
20+ f = FooForm(data)
21+ if f.is_valid():
22+ f.save()
23+ ... #probably redirect to result page
24+ else:
25+ #handle validation error
26+ else:
27+ #GET
28+ f = FooForm()
29+ ... #return response and display form
30+
31 When you call ``save()`` on a form created by ``form_for_instance()``,
32 the database instance will be updated. As in ``form_for_model()``, ``save()``
33 will raise ``ValueError`` if the data doesn't validate.
Back to Top