【问题标题】:Django inline formset errorDjango内联表单集错误
【发布时间】: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 的所有引用,因为它不再在您的代码中使用...

标签: django django-forms inline-formset


【解决方案1】:

看来我对 inlineformset_factory 的调用不正确。根据the docs,第一个参数应该是模型,而不是表单。

【讨论】:

    【解决方案2】:

    应该是: FestivalAddressFormSet = inlineformset_factory(Festival, FestivalAddress, form=FestivalAddressForm, extra=2)

    【讨论】:

    猜你喜欢
    • 2019-05-15
    • 1970-01-01
    • 2011-07-11
    • 1970-01-01
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多