Джанго/Трясогузка — динамически генерировать выбор на основе загруженного документа

Я пытаюсь реализовать блок диаграммы в Wagtail, где пользователь может загрузить электронную таблицу через DocumentChooserPanel, а затем на основе данных в этой электронной таблице создается диаграмма.

В настоящее время он работает, но пользователь должен явно указать переменную, на которой он хочет, чтобы диаграмма основывалась:

class ChartBlock(blocks.StructBlock):
    data_file = DocumentChooserBlock()
    primary_variable = blocks.CharBlock(required=True,max_length=255)

    class Meta:
        template = 'dataviz/blocks/Chart.html'
        icon = 'cogs'
        label = 'Chart'

Мне было интересно, есть ли способ динамически заполнить поле primary_variable заголовками столбцов из электронной таблицы, загруженной и сохраненной в документах, чтобы пользователь мог выбирать из списка доступных переменных вместо того, чтобы помнить, что была вызвана переменная.

Большое спасибо!


person Kirk Jackson    schedule 28.01.2016    source источник


Ответы (1)


Этого было бы нелегко достичь с помощью ванильной реализации Wagtail.

Форма редактирования страницы создается при загрузке страницы, включая заполнение списков выбора. Я почти уверен, что то же самое верно и для списков выбора в блоках StreamField, что они заполняются по мере добавления блока.

Код для этого находится между wagtailadmin.edit_handlers, wagtailadmin.views.pages и wagtailcore.blocks. Это будет довольно сложная настройка.

Другим возможным путем исследования может быть использование insert_editor_js для обновления поля primary_variable после загрузки документа. Однако я не уверен, что вы найдете надежный идентификатор, на который можно повесить прослушиватель событий.

Однако вскоре вы сможете самостоятельно проверить отправленную страницу. Только что был отправлен PR, позволяющий выполнить эту пользовательскую проверку. Это должно уменьшить количество пользовательских ошибок при добавлении primary_variable.

Эта функция должна быть доступна в версии Wagtail 1.4, которая, как мне кажется, должна выйти довольно скоро.

Надеюсь, это поможет.

person chrxr    schedule 08.03.2016
comment
PR, упомянутый Крисом выше, был объединен, поэтому в Wagtail наверняка будет доступна пользовательская проверка. 1.4. Релиз-кандидат должен быть доступен в ближайшие несколько дней. - person tomd; 08.03.2016