首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >QuerySelectField -SQLAlchemy-在Flask中获取不同的元素?

QuerySelectField -SQLAlchemy-在Flask中获取不同的元素?
EN

Stack Overflow用户
提问于 2021-05-16 12:48:53
回答 1查看 29关注 0票数 0

所以我从我的数据库填充queryselectfield。

代码语言:javascript
运行
复制
def place_query():
    
    return Place.query
    
class CreateItineraryForm(FlaskForm):

   opts = QuerySelectField('Select a city',query_factory=place_query,allow_blank=True,get_label='city',validators=[DataRequired()])

   days = IntegerField('Enter the number of days of stay',validators=[DataRequired()])

   submit = SubmitField("Generate Itinerary")

但是因为我的数据库有多个具有相同城市的元组。因此,在我的select字段中,同一城市多次出现。有没有办法只选择不同的城市名称?

这就是模式,如果它有用的话-

代码语言:javascript
运行
复制
class Place(db.Model):

__tablename__ = 'places'

id = db.Column(db.Integer,primary_key=True)

name = db.Column(db.String(64),nullable=False,index=True)

lat = db.Column(db.Float,nullable=False)

long = db.Column(db.Float,nullable=False)

city = db.Column(db.String(30),nullable=False,index=True)

user_reviews = db.relationship('Review',backref='subject',lazy=True)

def __init__(self,name,lat,long,city):

self.name = name

self.lat = lat

self.long = long

self.city = city

谢谢你的帮助!

EN

回答 1

Stack Overflow用户

发布于 2021-05-16 13:48:14

所以诀窍是不使用QuerySelectField,而是使用SelectField

这是新的代码-

代码语言:javascript
运行
复制
# this returns a tuple of the form (city_name,)
cities = db.session.query(Place.city).group_by(Place.city).order_by(Place.city).all()

city_list = []

# here we create a list from the tuple
def create_list(cities):
    for city in cities:
        city_list.append(city[0])

    return city_list

新的select字段如下所示-

代码语言:javascript
运行
复制
opts = SelectField('Select a city',validators=[DataRequired()],choices=create_list(cities))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67553272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档