Как отобразить пользовательскую форму с несколькими виджетами для одного поля в админке Django?
В документации Django говорится, что вы можете добавить форму в пользовательский интерфейс администратора:
class ArticleAdmin(admin.ModelAdmin):
form = MyArticleAdminForm
Мне нужен пользовательский интерфейс редактирования для специального поля в моей модели, где я отображаю несколько виджетов. (Это не совсем то же самое, но аналогией может быть виджет шестнадцатеричного редактора старой школы, где вы хотите получить тонкий контроль над редактированием большого блока информации). Возможно, я мог бы разбить несколько значений на несколько объектов базы данных и использовать InlineAdmin, но у меня есть специфические для приложения причины не делать этого.
Я думал использовать объект Form с некоторыми пользовательскими полями, но Django говорит, что это должен быть объект ModelForm:
<class 'myapp.admin.MyAdmin'>: (admin.E016) The value of 'form' must inherit from 'BaseModelForm'.
Можно ли в админке Django отобразить несколько виджетов (по сути, очень пользовательскую форму) для одного значения модели?
EDIT: Похоже, что MultiWidget может работать? Я собираюсь изучить это. Также, этот вопрос связан. Это говорит о том, что я должен просто изменить виджет на поле.
Ответом было сделать MultiWidget, переопределив:
__init__для установки виджетовdecompressиvalue_from_datadictдля распаковки и упаковки значения поляtemplate_nameдля рендеринга собственного шаблонаget_contextдля создания контекста для шаблона