Django内联表单集错误
Posted
技术标签:
【中文标题】Django内联表单集错误【英文标题】:Django inline formset error 【发布时间】:2012-06-27 06:11:02 【问题描述】:我正在尝试将内联表单集添加到表单中。这是重现错误的最少代码:
models.py
class Festival(Model):
desc = TextField(max_length=1000)
class FestivalAddress(Model):
festival = ForeignKey(Festival, related_name="addresses")
name = CharField(max_length="50")
urls.py
urlpatterns = patterns('',
url('^add/$', FestivalCreateView.as_view(), name='festival_add'),
)
views.py
class FestivalCreateView(CreateView):
model = Festival
form_class = FestivalForm
#Add FestivalAddressFormset to context here
forms.py
class FestivalAddressForm(ModelForm):
class Meta:
model = FestivalAddress
class FestivalForm(ModelForm):
class Meta:
model = Festival
FestivalAddressFormSet = inlineformset_factory(FestivalForm, FestivalAddress, form=FestivalAddressForm, extra=2)
这会引发 AttributeError:'ModelFormOptions' 对象没有属性 'get_parent_list'。我有点难过,因为我正在遵循here on SO 给出的解决方案。
编辑:我删除了 FestivalCreateView 对表单集的使用,因为不管有没有它都会发生错误。
【问题讨论】:
这些信息不足以解决问题。 FestivalCreateView 甚至不使用您的表单集?您需要更新示例以显示表单集的使用方式,并发布完整的堆栈跟踪。 Greg - FestivalCreateView 正在使用表单集。我意识到该问题与该用法无关,因此我删除了该代码以使代码更清晰。 好的,那么您应该删除对 Formset 的所有引用,因为它不再在您的代码中使用... 【参考方案1】:看来我对 inlineformset_factory 的调用不正确。根据the docs,第一个参数应该是模型,而不是表单。
【讨论】:
【参考方案2】:应该是:
FestivalAddressFormSet = inlineformset_factory(Festival, FestivalAddress, form=FestivalAddressForm, extra=2)
【讨论】:
获得类似工作的好例子haineault.com/blog/155以上是关于Django内联表单集错误的主要内容,如果未能解决你的问题,请参考以下文章