【问题标题】:Django tabular inline displayDjango表格内联显示
【发布时间】:2012-04-15 07:50:08
【问题描述】:

是否可以更改内联的显示以将其更改为this?我正在考虑更改管理模板文件“tabular.html”,是否有可能或者我应该更改其他内容?

更新

好的,我一直在尝试编辑 tabular.html,但我在 Django 方面的经验不足以了解如何/在哪里进行必要的更改......我应该从哪里开始有任何线索吗? 我不应该也改变CSS吗? 我猜如果我理解正确的话,{{ field.field }} 会自动呈现下拉菜单(Django 管理员默认)......

更新 2

我能够将第二列更改为我想要的功能,但我认为第一列会更棘手...当前status

更新 3

我认为可行的一个技巧是在每个内联上仅显示第一个字段的一个选项,然后停用“添加另一个选项”。如何迭代“tabular.html”中的选项?

更新 4

我想这个技巧应该在这里完成......我如何迭代字段选择以便每行只显示一个选择?

{% for fieldset in inline_admin_form %}
          {% for line in fieldset %}
            {% for field in line %}
            {{ field.get_choices_display }}
              <td class="{{ field.field.name }}">
              {% if field.is_readonly %}
                  <p>{{ field.contents }}</p>
              {% else %}
                  {{ field.field.errors.as_ul }}
                  {{ field.field }}
              {% endif %}
              </td>
            {% endfor %}
          {% endfor %}
        {% endfor %}

【问题讨论】:

    标签: django django-forms django-admin


    【解决方案1】:

    是的,您可以将 InlineModelAdmin 实例的 template 更改为您的自定义模板,例如 customized_inline.html。只需将 django/django/contrib/admin/templates/admin/edit_inline/tabular.html 复制到您的模板路径中的customized_inline.html 即可。

    编辑

    也许我误会了。如果你想改变一个表单域的呈现方式,一般的方法是改变它的widget。在 Django ModelAdmin 和 InlineModelAdmin 中,自定义字段小部件的主要方法围绕 django/contrib/admin/options.py 内部的 BaseModelAdmin.formfield_for_dbfield 方法,当您想要更改表单字段的小部件时读取代码和 the doc

    对于有选择的字段,您可以简单地在 ModelAdmin/InlineModelAdmin 实例中设置 radio_fields 以将该字段呈现为单选而不是下拉菜单。

    此外,使用 OneToOneField 代替 ForeignKey,或在 InlineModelAdmin 实例中设置 extramax_num 以防止管理员呈现多行内联,例如:

    class SomeInlineAdmin(admin.TabularInline):
        model = Foo
        extra = 1
        max_num = 1
    

    我无法打开您的第二个链接,您可以在问题中发布内容,而不是使用外部链接。

    【讨论】:

    • 谢谢,我能得到我想要的效果。
    猜你喜欢
    • 1970-01-01
    • 2012-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    • 2021-06-18
    相关资源
    最近更新 更多