Как отобразить пользовательскую форму с несколькими виджетами для одного поля в админке 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
для создания контекста для шаблона