保存时如何忽略窗体集的未更改窗体?

2024-10-01 17:35:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我有FormSetModelForm,在提交表单时需要忽略未填写的表单。你知道吗

这里是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)

在我的视图.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')

但是当我打印a.has_changed()的值时,我总是得到has_changed == True。你知道吗

经过几个小时的搜索,我现在知道应该将initial添加到我的表单中,但我不知道如何才能这样做,尤其是当我使用的是一个表单集而不是一个普通表单时。你知道吗


Tags: false表单datetyperequiredformswidgetattrs

热门问题