【发布时间】:2023-03-05 20:48:01
【问题描述】:
我有一个过滤表的表单,我希望表单条目构建一个 sqlalchemy 语句。
因为我有“无过滤器”选项,所以我不能只让表单域进入过滤器(“此处的表单域”)。但是必须有比做每一个排列更好的方法
AT= list(set([h.assigned for h in models.Request.query.all()]))
AT.append('No Filter')
form.assigned.choices=zip(AT,AT)
requestlist= models.Request.query.all()
if form.validate_on_submit():
if form.status.data=='No Filter' and form.assigned.data=='No Filter' and form.requestor.data=='No Filter':
requestlist= models.Request.query.all()
elif form.status.data != 'No Filter' and form.assigned.data=='No Filter' and form.requestor.data=='No Filter':
requestlist = db.session.query(models.Request).filter(models.Request.status.like(form.status.data)).all()
elif form.status.data == 'No Filter' and form.assigned.data!='No Filter' and form.requestor.data=='No Filter':
requestlist = db.session.query(models.Request).filter(models.Request.assigned.like(form.assigned.data)).all()
elif form.status.data == 'No Filter' and form.assigned.data=='No Filter' and form.requestor.data!='No Filter':
requestlist = db.session.query(models.Request).filter(models.Request.requestedBy.like(form.requestor.data)).all()
elif form.status.data != 'No Filter' and form.assigned.data=='No Filter' and form.requestor.data!='No Filter':
requestlist = db.session.query(models.Request).filter(models.Request.requestedBy.like(form.requestor.data))\
.filter(models.Request.status.like(form.status.data)).all()
elif form.status.data == 'No Filter' and form.assigned.data !='No Filter' and form.requestor.data!='No Filter':
requestlist = db.session.query(models.Request).filter(models.Request.requestedBy.like(form.requestor.data))\
.filter(models.Request.assigned.like(form.assigned.data)).all()
elif form.status.data != 'No Filter' and form.assigned.data !='No Filter' and form.requestor.data =='No Filter':
requestlist = db.session.query(models.Request).filter(models.Request.status.like(form.status.data))\
.filter(models.Request.assigned.like(form.assigned.data)).all()
elif form.status.data != 'No Filter' and form.assigned.data !='No Filter' and form.requestor.data !='No Filter':
requestlist = db.session.query(models.Request).filter(models.Request.status.like(form.status.data))\
.filter(models.Request.requestedBy.like(form.requestor.data))\
.filter(models.Request.assigned.like(form.assigned.data)).all()
【问题讨论】:
标签: python flask sqlalchemy flask-wtforms