I'm using 0.96. I define the following form
class TForm(forms.Form):
admin = forms.ChoiceField()
x = forms.IntegerField()
def __init__(self, data=None, **kwargs):
super(TForm, self).__init__(data, kwargs)
admins = [(a.name, a.name) for a in Admin.objects.all()]
self.fields['admin']._set_choices(admins)
Then, I instantiate it so:
f = TForm(initial={'x': 23})
If I dump out the table with as_table(), the initial x value is not in
the form. If I comment out the __init__ "constructor", initial is
honored and I see the initial x value as specified. I define an
__init__ for the purpose of setting choices on the admin ChoiceField.
I can initialize x manually in the __init__ function as follows:
def __init__(self, data=None, **kwargs):
super(TForm, self).__init__(data, kwargs)
admins = [(a.name, a.name) for a in Admin.objects.all()]
self.fields['admin']._set_choices(admins)
if kwargs.has_key('initial'):
vinit = kwargs['initial']
if vinit.has_key('x'): self.fields['x'].initial =
vinit['x']
Can someone explain why initial is ignored when I define my own
__init__? Is there a prescription for defining your own __init__ when
you sub-class Form and/or Model? I'm no Python expert and definitely
a newb when it comes to its new-style classes, so please take it easy
on me. :)
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected]
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
-~----------~----~----~----~------~----~------~--~---