ModelMultipleChoiceField显示在模板中是一个复选框列表,其中包含相应对象的unicode表示形式。如何以表格形式显示ModelMultipleChoiceField以及任意列中的任意字段?例如:
[x] | obj.name | obj.field1
答案 0 :(得分:4)
字段类有一个方法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 ...
答案 1 :(得分:0)
我在自定义的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返回的对象的字段。这些程序在表中显示所有选择,其中每一行都是一个对象/记录,并带有一个复选框。