如何从 wtforms QuerySelectField 中删除重复项
How to remove duplicatates from wtforms QuerySelectField
在我的 Flask 表单中,我想要一个下拉列表,其中包含唯一的 items.Depending 选项,用于筛选哪些项目将出现在第二个下拉列表中(为此使用 javascript)。
我有一个数据库 table 是这样的:
Category
Sub-category
Type
Application
Can't log in
Incident
Application
Error
Incident
Application
Install
Request
Application
Remove
Incident
Database
Optimise
Request
Database
Corrupt
Incident
等等。因此在类别列中有多个同名条目。
当前,当我使用此填充 QuerySelectField 时:
category = QuerySelectField(label='Category',
query_factory=lambda: Classification.query.filter_by(selectable=True),
allow_blank=True,
get_label='category', id='category', blank_text=u'Select a category...'
)
我得到了“类别”列中所有内容的列表。但我只想列出每一项。我该怎么做?
我想使用 SelectField 而不是 QuerySelectField,但不知道如何动态创建选择[]。
如果其他人有相同的用例,我想出了如何做到这一点。
我改变了这个:
category = QuerySelectField(label='Category',
query_factory=lambda: Classification.query.filter_by(selectable=True),
allow_blank=True,
get_label='category', id='category', blank_text=u'Select a category...'
)
对此:
category = QuerySelectField(label='Category',
query_factory=lambda: Classification.query.filter_by(selectable=True).distinct(Classification.category),
allow_blank=True,
get_label='category',
id = 'category',
blank_text = u'Select a category...'
)
诀窍是添加 distinct(column you need to be distinct)
部分。就我而言 distinct(Classification.category)
在我的 Flask 表单中,我想要一个下拉列表,其中包含唯一的 items.Depending 选项,用于筛选哪些项目将出现在第二个下拉列表中(为此使用 javascript)。
我有一个数据库 table 是这样的:
Category | Sub-category | Type |
---|---|---|
Application | Can't log in | Incident |
Application | Error | Incident |
Application | Install | Request |
Application | Remove | Incident |
Database | Optimise | Request |
Database | Corrupt | Incident |
等等。因此在类别列中有多个同名条目。 当前,当我使用此填充 QuerySelectField 时:
category = QuerySelectField(label='Category',
query_factory=lambda: Classification.query.filter_by(selectable=True),
allow_blank=True,
get_label='category', id='category', blank_text=u'Select a category...'
)
我得到了“类别”列中所有内容的列表。但我只想列出每一项。我该怎么做?
我想使用 SelectField 而不是 QuerySelectField,但不知道如何动态创建选择[]。
如果其他人有相同的用例,我想出了如何做到这一点。
我改变了这个:
category = QuerySelectField(label='Category',
query_factory=lambda: Classification.query.filter_by(selectable=True),
allow_blank=True,
get_label='category', id='category', blank_text=u'Select a category...'
)
对此:
category = QuerySelectField(label='Category',
query_factory=lambda: Classification.query.filter_by(selectable=True).distinct(Classification.category),
allow_blank=True,
get_label='category',
id = 'category',
blank_text = u'Select a category...'
)
诀窍是添加 distinct(column you need to be distinct)
部分。就我而言 distinct(Classification.category)