2016-01-28 13 views
2

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

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

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 поле динамически населенной с заголовками столбцов из электронной таблицы, загруженной и сохраненной в документах, - чтобы пользователь мог выбирать из списка доступных переменных вместо того, чтобы помнить, какую переменную вызывали.

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

ответ

1

Этого было бы нелегко добиться с помощью вайталиновой ванили.

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

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

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

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

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

Я надеюсь, что это поможет.

+0

[PR Chris упоминает выше] (https://github.com/torchbox/wagtail/pull/1867) был объединен, поэтому пользовательская проверка, безусловно, будет доступна в Wagtail 1.4. Кандидат на выпуск должен быть доступен в течение следующих нескольких дней. – tomd

Смежные вопросы