django: настройка отображения ModelMultipleChoiceField - PullRequest
2 голосов
/ 12 сентября 2010

ModelMultipleChoiceField отображает в шаблоне список флажков с юникодом представления соответствующих объектов. Как отобразить ModelMultipleChoiceField в форме таблицы с произвольными полями в произвольных столбцах? Например:

[x] | имя_объекта | obj.field1

Ответы [ 2 ]

4 голосов
/ 13 сентября 2010

В классе поля есть метод 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 голос
/ 12 декабря 2018

Я вернул obj сам в моем настроенном MultipleModelChoiceField

из django.forms.models import 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>

Поле1 и поле2 - это поля объекта, возвращаемого из label_from_instance. Эти программы отображают все варианты выбора в таблице, где каждая строка представляет собой объект / запись с флажком.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...