add extra field to ModelForm

sennierer picture sennierer · Jun 10, 2015 · Viewed 15.9k times · Source

I am adding an extra field to a Django ModelForm like that:

class form(forms.ModelForm):
    extra_field = forms.CharField(label='Name of Institution')
    class Meta:
        model = db_institutionInstitution
        fields = ['conn_kind','time','inst_name2']

The form is actually working fine, but I cant prepopulate it. I use it in a modelformset_factory:

formset = modelformset_factory(db_institutionInstitution,form=form)

I manually run through a queryset and add the entry in the dictionary needed for the additional form in the formset. However, when I call:

formset1 = formset(prefix='brch',queryset=qs1)

the extra_field is not prepopulated as intended (the rest is working fine).

Can anyone help?

Answer

professorDante picture professorDante · Jun 10, 2015

If you want to set a default.

extra_field = forms.CharField(label='Name of Institution', initial="harvard")

If you want to dynamically set a value put it on form initialization:

def __init__(self, *args, **kwargs):
    super(form, self).__init__(*args, **kwargs)
    self.fields['extra_field'].initial = "harvard"