I'm trying to prepopulate the data in my django form based on some information, but NOT using ModelForm, so I can't just set the instance.
This seems like it should be really easy, but for some reason I can't find any documentation telling me how to do this. This is my form:
class MyForm(forms.Form): charfield1 = forms.CharField(max_length=3) charfield2 = forms.CharField(max_length=3) choicefield = forms.ModelChoiceField(MyModel.objects.all())
I tried just doing:
form = MyForm() form.charfield1 = "foo" form.charfield2 = "bar" # a model choice field form.choicefield = MyModel.objects.get(id=3)
which does not work.
Try:
form = MyForm({'charfield1': 'foo', 'charfield2': 'bar'})
The constructor of Form
objects can take a dictionary of field values. This creates a bound form, which can be used to validate the data and render the form as HTML with the data displayed. See the forms API documentation for more details.
Edit:
For the sake of completeness, if you do not want to bind the form, and you just want to declare initial values for some fields, you can use the following instead:
form = MyForm(initial={'charfield1': 'foo', 'charfield2': 'bar'})
See the documentation of initial values for details.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With