Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

add extra field to ModelForm

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?

like image 668
sennierer Avatar asked Jun 10 '15 15:06

sennierer


People also ask

What is instance in Form django?

It also means that when Django receives the form back from the browser, it will validate the length of the data. A Form instance has an is_valid() method, which runs validation routines for all its fields. When this method is called, if all fields contain valid data, it will: return True.


1 Answers

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"
like image 95
professorDante Avatar answered Nov 15 '22 16:11

professorDante