У меня есть приложение 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
она просто печатает имя объекта в ячейке:
format_html
(Я должен был попробовать!) Дает
'Select' object has no attribute 'format'
Может быть, есть способ преобразовать этот объект виджета в HTML представление только с помощью кода admin.py?
Спасибо
PS Я заставил его работать, определяя мою форму в forms.py, но все еще интересовался моим вопросом.