Django 2.0: отображение виджета Select в виде HTML в таблице списка - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть приложение Django 2.2. Один класс в интерфейсе администратора (представление «список», а не «изменение»!) Нуждается в столбце с выпадающим списком выбора с номерами от 1:10 и кнопкой «Отправить». Из документов я понял, что должен использовать виджет «Выбрать» и определить форму. Мне любопытно, можно ли это сделать только с admin.py и моей моделью, без использования form.py, templates, et c. Итак, я попробовал это:

class MyClassAdmin(SuperAdmin):
    list_display = ["inline_mycolumn", "other_field1", "etc"]

    def mycolumn(self, my_object):
        from django import forms
        MY_CHOICES= [tuple([x,x]) for x in range(1,11)]
        return mark_safe(forms.Select(choices=MY_CHOICES))

    .....the rest of the class code....

Это ниже, конечно, не отображает виджет как выпадающий список, в источнике таблицы это выглядит как:

<th class="field-column"><a href="/admin/<myapp>/<my_model_name>/<record id>/change/"><django.forms.widgets.select object="" at="" 0x7f4fea267828=""></django.forms.widgets.select></a></th> и ячейка остается опорожнить. Остальная часть таблицы отображается как следует.

И без mark_safe она просто печатает имя объекта в ячейке: enter image description here

format_html (Я должен был попробовать!) Дает

'Select' object has no attribute 'format'

Может быть, есть способ преобразовать этот объект виджета в HTML представление только с помощью кода admin.py?

Спасибо

PS Я заставил его работать, определяя мою форму в forms.py, но все еще интересовался моим вопросом.

...