Jeff,
Looks like you are rendering out the form class itself rather than an
instance of the form.
You could try this approach.

from django import newforms as forms
from django.template import Context, Template
from django.http import HttpResponse

class MedForm(forms.Form):
    def __init__(self, *args, **kwargs):
        super(MedForm, self).__init__(*args, **kwargs)
        self.med_list = []
        for i in range(1, 6):  # arbitrary number
            k = 'med_%d' % i
            self.fields[k] = forms.CharField(required=False, label=k)
            self.med_list.append(self.fields[k])

def test(request):
    Form = MedForm()
    return HttpResponse(Form.as_p())


(example .py file at 
http://www.pukkapeople.com/django/how-to-s/django_newforms.py/
)

On Feb 17, 4:22 am, "Rubic" <[EMAIL PROTECTED]> wrote:
> Hi, I'm the 985th person to attempt dynamic fields
> in newforms.  ;-)
>
> Actually I've been able to do lots of dynamic stuff
> in newforms.  It's rendering the forms in templates
> that sometimes confuses me.  For example, given
> the following code to build a form based on an
> arbitrary number of medications:
> --
> from django import newforms as forms
> from django.template import Context, Template
>
> class MedForm(forms.Form):
>     def __init__(self, *args, **kwargs):
>         super(MedForm, self).__init__(*args, **kwargs)
>         self.med_list = []
>         for i in range(1, 4):  # arbitrary number
>             k = 'med_%d' % i
>             self.fields[k] = forms.CharField(required=False, label=k)
>             self.med_list.append(self.fields[k])
>
> t = Template("""{% for med in form.med_list %}
>   {{ med.label }}: {{ med }}
> {% endfor %}""")
>
> print t.render(Context({'form':MedForm({})}))
> --
> Produces the following output:
>
>   med_1: <django.newforms.fields.CharField object at 0xb7cd054c>
>   med_2: <django.newforms.fields.CharField object at 0xb7cd0d2c>
>   med_3: <django.newforms.fields.CharField object at 0xb7ce0c2c>
>
> Obviously, what I want is something more like this:
>
>   med_1: <input type="text" name="med_1" id="id_med_1"/>
>   med_2: <input type="text" name="med_2" id="id_med_2"/>
>   med_3: <input type="text" name="med_3" id="id_med_3"/>
>
> So how do I get there?  I could do something like
> this in line 11:
>
>   bf = BoundField(self, self.fields[k], k)
>   self.med_list.append(bf.as_widget(self.fields[k].widget))
>
> But I'd lose all the field information.  Basically, I'm
> looking for the magic BoundField.as_widget() rendering
> formula.  I've put the above code here for easier viewing:
>
>  http://dpaste.com/hold/5764/
>
> --
> Jeff Bauer
> Rubicon, Inc.


--~--~---------~--~----~------------~-------~--~----~
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