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