On Fri, 2007-12-21 at 18:38 +0000, Jorge Sousa wrote:
> Hi,
> 
> I'm a newby to django and python 
> 
> I'm trying to create a form (master / detail) editable all the way. 
> I'm able to post data in the following format: 
> 
> request.data = {
>    'id': NN, 
>    'name': "John Doe',
>    'detail1.0.cod': 'XX',
>    'detail1.0.descr': "abc",
>    'detail1.1.cod': 'YY',
>    'detail1.1.descr': "abc",
>    'detail1.2.cod': 'ZZ',
>    'detail1.2.descr': "abc",
>    . . 
>    .. 
>    'detail1.NN.cod': -----',
>    'detail1.NN.descr': "----"
> }

If you could slightly rename your submission fields, there is indeed an
easier way to do this. I'm assuming you are using Django's "newforms"
package to create a form class of some kind. The "prefix" attribute that
you can optionally pass to a form's __init__ method can be used to tweak
the names expected by a form's elements.

Also, since you can happily pass extra information to a form (it will
just ignore it), you will end up with something like the following:

        # Assume MasterForm and DetailForm are your form classes
        
        def my_view(request, ...):
           master = MasterForm(request.POST)
           detail_forms = []
           for i in range(XX):  # work out XX somehow
              detail_forms.append(DetailForm(request.POST,
        prefix=str(i))
           # ... (now check is_valid(), etc, as per normal)
        
To see how the form element should be named here, have a look at [1],
for example. That's part of the test suite and shows the default naming.
You could also override the add_prefix() in your form so that it returns
something in the format you're expecting from the form submission.

[1]
http://code.djangoproject.com/browser/django/trunk/tests/regressiontests/forms/forms.py#L1228

This might all take more than just a couple of minutes to master, since
you said you were just starting out with Django and Python. Like
anything new, doing advanced stuff will require a bit of patience and
experimentation, so just try things out and you'll gradually close in on
a solution.

Regards,
Malcolm

-- 
No one is listening until you make a mistake. 
http://www.pointy-stick.com/blog/


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to