Django:带有form_class的generic.UpdateView不会呈现表单

时间:2013-07-26 21:16:16

标签: python django django-forms django-templates django-views

我在Django中遇到了一些令人困惑的问题。我使用相同的模板创建了使用通用版本的更新和创建视图。他们完美地工作......直到我添加了一个自定义的modelForm来排除一个字段。现在,Create视图仍然可以正常工作,但Update视图根本不会呈现表单。

形式:

class member_form(ModelForm):
     class Meta:
          model=member
          exclude=('created_by',)

查看:

class member_detail(generic.UpdateView):
     form_class=member_form
     model=member
     template_name_suffix='_detail'

class member_create(generic.CreateView):
     form_class=member_form
     model=member
     template_name_suffix='_detail'

网址(主要):

url(r'^members/',include(members.urls',namespace=members),name='members_list'),

网址(应用):

url(r'^$',login_required(views.member_list.as_view()),name='index'),
url(r'^(?P<pk>\d+)/$',login_required(views.member_detail.as_view(success_url=".")),name='detail'),
url(r'^new/$',permission_required('members.add_member')(views.member_create.as_view(success_url='/members/')),name='create'),

这对两个视图都很有效,直到我添加了form_class。现在,member_create仍然可以正常工作,但member_detail没有为{{form.as_table}}显示任何内容。当我在该模板中将其切换到{{form}}时,我得到了member_detail:

<members.views.member_form object at 0x7f7de3f20d50>

这里发生了什么?有任何想法吗?谢谢!

1 个答案:

答案 0 :(得分:0)

问题是我在生产代码上的一个愚蠢的命名错误,我在尝试编写新的部分以添加问题时发现了这个错误。我的问题中的_create和_form对象都在生产中命名为_form。