【发布时间】:2010-09-12 17:18:25
【问题描述】:
ModelMultipleChoiceField 在模板中显示是一个复选框列表,带有对应对象表示的 unicode。如何以表格形式显示 ModelMultipleChoiceField,任意列中的任意字段?例如:
[x] |对象名 | obj.field1
【问题讨论】:
标签: django django-forms
ModelMultipleChoiceField 在模板中显示是一个复选框列表,带有对应对象表示的 unicode。如何以表格形式显示 ModelMultipleChoiceField,任意列中的任意字段?例如:
[x] |对象名 | obj.field1
【问题讨论】:
标签: django django-forms
我在自定义的 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 返回的对象的字段。这些程序在表格中显示所有选项,其中每一行都是带有复选框的对象/记录。
【讨论】:
字段类有一个方法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...
【讨论】: