MultiForm Updateview Django

时间:2016-01-11 15:41:54

标签: django forms

使用django-betterforms.MultiForm和Django 1.8,我对CreateView没有任何问题。
但是在使用UpdateView时出现此错误:
'字典'对象没有属性' _meta'
来自model_to_dict中的python3.4 / site-packages / django / forms / models.py,行

 opts = instance._meta

来自/python3.4/site-packages/betterforms/multiform.py in __init __

self.forms[key] = form_class(*fargs, **fkwargs)

以下是我的模特:

    class Salle(models.Model):
        nom = models.CharField(max_length=200)
        adresse_d_attache = models.ForeignKey(Adresse, null=True, blank=True, on_delete=models.SET_NULL)

    class Adresse(models.Model):
        numero_voie_nomvoie = models.CharField(max_length=200)

以下是表格和多种形式:

    class SalleForm_avec_objet_adresse(MultiForm):
        form_classes = OrderedDict((
            ('salle', SalleForm_sans_objet_adresse),
            ('adresse', Adresseform),
        ))

    class SalleForm_sans_objet_adresse(ModelForm):
        class Meta:
            model = Salle

    class Adresseform(ModelForm):
        ville_selection = forms.CharField(widget=forms.TextInput(attrs={'class': 'ville_selection', 'placeholder': 'Choix d\'une ville'}))
        class Meta:
            model = Adresse

这是更新视图:

class Salle_avec_objet_adresse_updateview(UpdateView):
    model = Salle
    form_class = SalleForm_avec_objet_adresse
    template_name = 'Impro_Annuaire_P3_D17/salle_createview.html'

    def get_form_kwargs(self):
        kwargs = super(Salle_avec_objet_adresse_updateview, self).get_form_kwargs()
        kwargs.update(instance={
            'salle': self.object,
            'adresse': self.object.adresse_d_attache,
        })
        return kwargs

此错误来自kwargs.update部分。删除它会导致multiform出现在我的模板中,而salle是唯一填充的部分。 虽然它在我看来非常像in the doc

1 个答案:

答案 0 :(得分:2)

您:

class SalleForm_avec_objet_adresse(MultiForm):
        form_classes = OrderedDict((
            ('salle', SalleForm_sans_objet_adresse),
            ('adresse', Adresseform),
        ))

应该在MultiModelForm之后继承而不是MultiForm。

http://django-betterforms.readthedocs.io/en/latest/multiform.html