【问题标题】:django: customizing display of ModelMultipleChoiceFielddjango:自定义 ModelMultipleChoiceField 的显示
【发布时间】:2010-09-12 17:18:25
【问题描述】:

ModelMultipleChoiceField 在模板中显示是一个复选框列表,带有对应对象表示的 unicode。如何以表格形式显示 ModelMultipleChoiceField,任意列中的任意字段?例如:

[x] |对象名 | obj.field1

【问题讨论】:

    标签: django django-forms


    【解决方案1】:

    我在自定义的 MultipleModelChoiceField 中返回了 obj 本身

    从 django.forms.models 导入 ModelMultipleChoiceField

    类 MyMultipleModelChoiceField(ModelMultipleChoiceField):

    def label_from_instance(self, obj):
        return obj
    

    在我的模板中

    <table>
        {% for checkbox in form.MyField %}
            <tr>
            <td>
            {{ checkbox.tag }}
            </td>
            <td>
            {{ checkbox.choice_label.field1 }}
            </td>
            <td>
            {{ checkbox.choice_label.field2}}
            </td>
            </tr>
        {% endfor %}
    </table>
    

    field1 和field2 是label_from_instance 返回的对象的字段。这些程序在表格中显示所有选项,其中每一行都是带有复选框的对象/记录。

    【讨论】:

      【解决方案2】:

      字段类有一个方法label_from_instance,用于控制对象的表示方式。您可以在自己的字段类中覆盖它:

      from django.forms.models import ModelMultipleChoiceField
      
      class MyMultipleModelChoiceField(ModelMultipleChoiceField):
      
          def label_from_instance(self, obj):
              return "%s | %s" % (obj.name, obj.field1)
      

      您还应该能够输出一些带有它的html...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-09-20
        • 2016-10-17
        • 1970-01-01
        • 2011-05-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多