Как создать Chosen-Selects с помощью WTForms? - PullRequest
0 голосов
/ 20 декабря 2018

Как я могу создать форму с WTForms , в которой <select> элементы Выбраны -Выбирает?

Я пытался это подход, но он кажется устаревшим.

1 Ответ

0 голосов
/ 20 декабря 2018

То, что я сделал, было следующим:

from wtforms import SelectField, SelectMultipleField


def _add_chosen_class(kwargs):
    '''
    Add the class 'chosen-select' to the HTML elements, keeping any
    other specified render parameters or other classes.
    '''
    if 'render_kw' in kwargs:
        if 'class' in kwargs['render_kw']:
            kwargs['render_kw']['class'] += ' chosen-select'
        else:
            kwargs['render_kw']['class'] = 'chosen-select'
    else:
        kwargs['render_kw'] = {'class': 'chosen-select'}


class ChosenSelectField(SelectField):
    '''A select field rendered with chosen'''
    def __init__(self, *args, **kwargs):
        _add_chosen_class(kwargs)
        super(ChosenSelectField, self).__init__(*args, **kwargs)


class ChosenSelectMultipleField(SelectMultipleField):
    '''A multiple-select field rendered with chosen'''
    def __init__(self, *args, **kwargs):
        _add_chosen_class(kwargs)
        super(ChosenSelectMultipleField, self).__init__(*args, **kwargs)

Затем вы можете объявить ChosenSelect[Multiple]Field s в своих формах.

На стороне Javascript вы должны выполнять обычный выбранный spiel-include chosen.min.js и выполнить (при условии, что jQuery)

$('.chosen-select').chosen({/* chosen-config here */})

Примечание. При таком подходе не будет отображаться всплывающее окно с ошибкой при отправке, если ваше поле является обязательным, поскольку выбранное скрывает исходный <select>.Вам придется позаботиться об этом другим способом (возможно, CSS).

...