Как заказать выпадающий список в QuerySelectField - PullRequest
0 голосов
/ 04 июня 2018

У меня есть Python wtforms QuerySelectField, который извлекает данные из неупорядоченной базы данных.Как заставить список отображаться в алфавитном порядке?

1 Ответ

0 голосов
/ 04 июня 2018

Применить порядок к запросу, используемому полем.При наличии такой модели, как

class Car(Base):
    ...
    make = Column(Unicode, nullable=False)
    model = Column(Unicode, nullable=False)

, вы передадите запрос или фабрику запросов , которая выдаст упорядоченные результаты:

def cars():
    return session.query(Car).order_by(Car.make, Car.model)

class Cars(Form):
    car = QuerySelectField(query_factory=cars)

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

form.car.query = session.query(Car).order_by(Car.make, Car.model)

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

def get_car_label(car):
    return f"{car.make} {car.model}"

class Cars(Form):
    car = QuerySelectField(query_factory=cars, get_label=get_car_label)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...