使用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。
答案 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