for rendering you should use BoundField... I use something like this... for s in ....: name = 'stay_' + str( s.id ) bf = BoundField( self, self.fields[name], name ) output.append( u'<td>%s</td></tr>' % bf )
On 2/17/07, 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. > > > > > -- Honza Kr�l E-Mail: [EMAIL PROTECTED] ICQ#: 107471613 Phone: +420 606 678585 --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---