首页 > 解决方案 > 保存时如何忽略我的表单集的未更改表单?

问题描述

我有一个FormSetof 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 而不是普通表单时。

标签: pythondjangodjango-formsdjango-viewsformset

解决方案


推荐阅读