【问题标题】:Django Formset Override As Table To Show As GridDjango Formset 覆盖为表格以显示为网格
【发布时间】:2012-11-04 19:10:47
【问题描述】:

我正在使用表单集在一个页面上收集多个表单的数据,但我意识到表单集的 .as_table 显示对于我正在尝试做的事情来说不是最理想的,而不是打印每个表单元素作为一个新的表格行,我正在考虑将每个表单本身打印为单独的行,并有一个带有字段名称的表头,因为我知道我的表单集对于每个表单实例都有相同的字段。通过这种方式,您可以获得用户可以填写的数据网格。我已经通过打印表单的模板手动完成了它,但我想知道是否有任何方法可以覆盖 formset.as_table 以在其中打印它形式而不是目前完成的方式。这可能吗,是否已经在某个地方完成了,或者如果没有,您建议我怎么做?

【问题讨论】:

    标签: django grid overriding formset


    【解决方案1】:

    您始终可以创建自己的 Formset(也可能是 Form)子类,该子类覆盖 as_table 方法,以任何您想要的方式输出表单。

    不过,我的建议是考虑使用 django-crispy-forms 和良好的 CSS 定义。

    【讨论】:

    • 谢谢,我现在正在研究脆的表格,你对在哪里寻找覆盖 as_table 有什么建议吗?我正在查看 Django API,但我什至找不到任何关于表单集的信息,而其他 django 文档也没有提供大量关于对它们进行子类化的信息。
    • 在我的回答中,我链接到了 Django 的 Formset.as_table 源代码。如果缺少文档,没有比代码更好的替代方法了 :-) 确保还检查表单的 as_table 实现以及它更清晰。
    • 如果我使用 formset_factory 创建表单集,我是否会阻止自己覆盖 as_table?
    【解决方案2】:

    在您用于表单集的类(而不是使用表单集的类)中覆盖 as_table。 Super() 把 as_table 变成一个变量。将其转换为字符串,然后进行 repr。将“\n”替换为空字符串。删除 repr 开头和结尾的引号。将其转换为字符串。调用 django 框架的 mark_safe 方法对结果字符串,并返回。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-08
      • 2023-03-27
      • 1970-01-01
      相关资源
      最近更新 更多