通过modelformset更新时,分配错误之前引用的Django局部变量

通过modelformset更新时,分配错误之前引用的Django局部变量,django,django-forms,django-templates,modelform,Django,Django Forms,Django Templates,Modelform,我使用此视图编辑3个模型表单(2个通过模型表单集): 这是我的forms.py: class DossierForm(forms.ModelForm): mat_id = forms.CharField(max_length=7, label="N°") mattypes = ( ('A - أ', 'A - أ'), ('B - ب', 'B - ب'), ('D - د', 'D - د'), ('H - ه',

我使用此视图编辑3个模型表单(2个通过模型表单集):

这是我的forms.py:

class DossierForm(forms.ModelForm):
    mat_id = forms.CharField(max_length=7, label="N°")
    mattypes = (
        ('A - أ', 'A - أ'),
        ('B - ب', 'B - ب'),
        ('D - د', 'D - د'),
        ('H - ه', 'H - ه'),
        ('O - و', 'O - و'),
        ('M - المغرب', 'M - المغرب'),
        ('P - ش', 'P - ش'),
        ('J - ج', 'J - ج'),
        ('FAR - ق م م', 'FAR - ق م م'),
        ('FA - ق س', 'FA - ق س'),
        ('PC - و م', 'PC - و م'),
        ('CD - ه د', 'CD - ه د'),
        ('CI - ت د', 'CI - ت د'),
        ('CC - ت د', 'CC - ت د'),
        ('WW', 'WW'),
        ('W18', 'W18'),
        ('96', '96'),
        ('97', '97'),
        ('98', '98'),
        ('99', '99'),
    )
    mat_symbol = forms.CharField(label='Symbole', widget=forms.Select(choices=mattypes))
    mat_ville = forms.CharField(max_length=2, label='Ville')
    assurance = forms.ModelChoiceField(queryset=Assurance.objects.all())
    ville = forms.ModelChoiceField(queryset=City.objects.all())
    intermediaire = forms.ModelChoiceField(queryset=Intermediaire.objects.all())
    marque = forms.ModelChoiceField(queryset=Marque.objects.all())
    model = forms.ModelChoiceField(queryset=Model.objects.all())
    client_name = forms.CharField(max_length=70)
    num_police = forms.IntegerField()
    glace_type = forms.ModelChoiceField(queryset=GlassType.objects.all())
    glace = forms.ModelChoiceField(queryset=Glass.objects.all())
    joint = forms.BooleanField(initial=False, required=False)
    OV = ( # Options Vitre
        ('AD', 'AD'),
        ('SD', 'SD'),
        ('T', 'T'),
        ('ST', 'ST'),
    )

    option_vitre = forms.CharField(label='Option vitre', widget=forms.Select(choices=OV))
    valeur_assuree = forms.IntegerField(label='Valeur assurée')
    num_sinistre = forms.IntegerField(label='N° sinistre')
    date_sinistre = forms.DateField(widget=forms.SelectDateWidget(months=MONTHS), label='Date sinistre')
    date_effet = forms.DateField(widget=forms.SelectDateWidget(months=MONTHS), label='Date effet')
    date_echeance = forms.DateField(widget=forms.SelectDateWidget(months=MONTHS), label='Date échéance')
    franchise_contractuelle = forms.IntegerField(label='Franchise contractuelle')
    franchise_a_recuperer = forms.IntegerField(label='Franchise à récupérer')
    tva_a_recuperer = forms.IntegerField(label='TVA à récupérer')
    commentaire = forms.CharField(widget=forms.Textarea, label='Commentaire')


    class Meta:
        model = Dossier
        fields = ('mat_id', 'mat_symbol', 'mat_ville', 'assurance', 'ville',
        'intermediaire', 'marque', 'model', 'client_name', 'num_police',
        'glace_type', 'glace', 'joint', 'option_vitre', 'valeur_assuree',
        'num_sinistre', 'date_sinistre', 'date_effet', 'date_echeance',
        'franchise_contractuelle', 'franchise_a_recuperer', 'tva_a_recuperer',
        'commentaire')

class DocumentdebaseForm(forms.ModelForm):
    documentdebase_image = forms.ImageField(label='')

    class Meta:
        model = DocumentdeBase
        fields = ('documentdebase_image',)

class PhotoAvantForm(forms.ModelForm):
    photoavant_image = forms.ImageField(label='')

    class Meta:
        model = PhotoAvant
        fields = ('photoavant_image',)
运行视图时,我发现以下错误:

Exception Type:     UnboundLocalError
Exception Value:    local variable 'dossier_form' referenced before assignment
下面是一个场景:我想在同一个视图/模板中编辑3个表单。我创建了一个用于创建新模型的类似视图,它工作得很好(非常类似的视图,只是这次我添加了要修改的现有模型的pk,并将其添加到GET方法场景中)。
问题似乎出在哪里?

如果
实例档案。拒绝计数
既不是1也不是2,那么
档案表格
从未定义过,那么当您循环表单集时,您将引用
档案表格
拒绝计数是2,我会在管理界面中再次检查它。由于拒绝计数算法是如何产生的,它永远不会等于除了这两个数字以外的任何东西。解决了!我只是把它改为2个if语句,而不是if-else语句。我不知道为什么,但它现在起作用了。
Exception Type:     UnboundLocalError
Exception Value:    local variable 'dossier_form' referenced before assignment