【问题标题】:How to order dropdown list in QuerySelectField如何在 QuerySelectField 中订购下拉列表
【发布时间】:2018-06-03 21:44:27
【问题描述】:

我有一个 python wtforms QuerySelectField,它从无序数据库中提取数据。如何使列表按字母顺序显示?

【问题讨论】:

    标签: python sqlalchemy wtforms


    【解决方案1】:

    对字段使用的查询应用排序。给定一个模型,例如

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

    您将传递一个产生有序结果的query or a query factory

    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)
    

    【讨论】:

    • 谢谢你,这是完美的答案。我还在学习 python,所以这对我很有帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    相关资源
    最近更新 更多