【问题标题】:Using form in object_detail在 object_detail 中使用表单
【发布时间】:2011-09-25 06:05:29
【问题描述】:

这让我很难过。 (但我是新手。)通用视图 object_detail 使用查询集和感兴趣的 id 字段调用。当 object_detail 然后呈现模板时,它使用 template_object_name 完成。当我编写模板时,我使用 template_object_name 并且可以显示所有字段。好的,这很好,但我有一个用 ModelForm 制作的表格。

那么如何让表单显示出来呢?我四处寻找这个。我尝试在 extra_context 中传递表单,以便表单可以接受用于呈现模板的对象中的数据,但不行。

解决方法只是编写一个视图。 object_detail 的问题在于,通过指定 id 拉出行的 SQL 是在 object_detail 内部完成的,然后对象进入视图。如果我对使用通过 ModelForm 创建的表单感兴趣,那么我想设置一个 form=mymodelForm(object) 并将表单传递给模板进行渲染。另一种问我问题的方法是 object_detail 中指定指定哪种对象的钩子在哪里?

【问题讨论】:

  • 我不确定我理解你想要什么。如果您想显示表单来编辑对象,您是否考虑过改用update_object 通用视图?
  • 哦,我可以显示表格并输入数据或进行编辑。这是一个如何处理 object_detail 视图的问题?模板在使用 object_detail 时获取一个对象。很高兴查询该数据库并将正确的对象传递给模板。如果我将它们放在模板中,我可以显示它们。但是,当由 object_detail 显示时,通用视图似乎应该有一种方法来显示类的所有字段。毕竟,使用表单类,您只需在模板中放入一个变量,例如 {{ form }},整个表单就会神奇地爆发。
  • 在模板中写入{{ object }} 的位置渲染的内容取决于模型的__unicode__ 方法。你可以想象这样写出来的格式很好的 HTML,但这违反了松散耦合(如果你想改变对象的呈现方式,你必须去弄乱模型,而不是模板——此外,__unicode__ 表示还用于其他地方,例如交互式 shell 和管理界面)。表单允许您这样做,因为它们被设计为使用模板语言(它们已经是表示层的一部分)。
  • 我使用 unicode 标识符来显示我个人的姓名和出生日期,这在列表视图中效果很好。怎么样 - 我可以从 object_detail 子类化并使用表单混合来创建自定义的通用视图,该视图将显示表单?
  • 感谢所有这一切。我/已经回答了stackoverflow.com/q/6564068/820321 中的问题

标签: django forms django-forms


【解决方案1】:

答案可在Using class based generic view DetailView with a ModelForm reveals a bug - how to proceed?获得

感谢大家。相关问题的 cmets 让我弄清楚了这一点。没有你就不可能做到这一点!

【讨论】:

    猜你喜欢
    • 2011-07-05
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    • 2018-10-25
    • 2015-01-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多