Как можно игнорировать неизмененные формы моего набора форм при сохранении? - PullRequest
0 голосов
/ 27 июня 2018

У меня есть FormSet из ModelForm, и мне нужно игнорировать формы, которые не заполнены при отправке моей формы.

Вот это ModelForm:

class associe(forms.ModelForm):
#Associé 
date_naissance = forms.DateField(initial=datetime.date.today,widget=forms.TextInput(attrs=
                            {
                                'type':'date'
                            }),required = False)
associe_gerant = forms.CharField(initial="0",label='',widget=forms.RadioSelect(choices=ASSOCIE_GERANT,attrs={'oninput':'this.className = ""'}),required = False)
tassocie = forms.ChoiceField(initial="Physique",choices = TYPE_ASSOCIE,widget=forms.Select(attrs={'onchange':'TypeAssocie(this)'}),required = False)
nassocie = forms.ChoiceField(initial="Marocain",choices = NATIONALITE,widget=forms.Select(attrs={'onchange':'NationaliteAssocie(this)'}),required = False)
tapport = forms.CharField(initial="0",label="type d'apport",widget=forms.RadioSelect(choices=APPORT,attrs={'onchange':'TypeApport(this)'}),required = False)
montant_apport = forms.FloatField(initial="0",required = False)
type_apport = forms.CharField(initial="0",max_length=100,required = False)
valeur_estimatif = forms.FloatField(initial="0",required = False) 
date_naissance_etrange = forms.DateField(initial=datetime.date.today,widget=forms.TextInput(attrs=
                            {
                                'type':'date'
                            }),required = False)
date_naissance_gerant_asso = forms.DateField(initial=datetime.date.today,widget=forms.TextInput(attrs=
                            {
                                'type':'date'
                            }),required = False)
class Meta:
    model = PerP
    fields = ('nom','prenom','civilite','nassocie','tassocie','cin','date_naissance','lieu_naissance','adresse','passeport','num_sejour','date_delivrance','lien_delivrance','denomination','siege','forme_juridique','capital','ville','num_rc','civilite_gerant_asso','representant_legal','date_naissance_gerant_asso','pass_cin','nationalite_gerant_asso','adresse_gerant_asso','nom_etrange','prenom_etrange','nationalite','date_naissance_etrange','adresse_etrange',)

Мой FormSet:

FormSet=formset_factory(associe,extra=7)

В моем views.py этот метод отправляет форму:

def saveToBase(request):
    associe=FormSet(request.POST)
    if associe.is_valid():
        for a in associe:
            if a.is_valid() and  a.has_changed():
                a.save()
    return render(request,'societe/accueil.html')

но я всегда получаю has_changed == True, когда печатаю значение a.has_changed().

После нескольких часов поиска я знаю, что должен добавить initial к своей форме, но не могу понять, как мне это сделать, особенно когда я работаю с FormSet, а не с нормальной формой.

...