2
我試圖構建一個查詢,它需要表單數據並刪除任何None
或" "
提交,但我不確定如何處理邏輯。這是代碼;如果無或爲空,則從查詢中刪除對象
@app.route('/filterassets', methods=['GET', 'POST'])
def searchassets():
form = FilterAssetsForm()
results = None
if request.method == "POST":
if form.validate_on_submit():
try:
horsepower = form.horsepower_search.data
voltage = form.voltage_search.data
rpm = form.rpm_search.data
results = Motor.query.filter_by(horsepower=horsepower, voltage=voltage, rpm=rpm).all()
except Exception as e:
flash(e)
db.session.rollback()
return render_template('filterassets.html', form=form, results=results)
return render_template('filterassets.html', form=form)
因爲它是一個頁面,讓用戶過濾器,而不是明確的搜索後臺,某種形式的數據是空的。這導致查詢搜索一個或多個表單== None的結果。
示例:用戶在馬力表格中輸入100,RPM和電壓保持空白。即使有100馬力的行,查詢也不會返回任何結果,因爲它正在查找行數,其中馬力== 100,RPM和電壓==無。
我試過用filter(None, object)
沒有成功,並認爲解決方案可能在某個地方使用kwargs
。
我知道我需要將所有表單數據傳遞給將刪除None
或Null
條目的東西,然後將它傳遞給最終的Motor.query.filter_by
參數,我只是不知道如何。
謝謝!這真的幫我弄明白了。我只是很難理解filter_by()參數如何能夠理解kwarg並以正確的格式解釋它,即使它是字典?這是SQLAlchemy的一個特性,能夠將字典翻譯爲模型,反之亦然? – xGlorify
不,它實際上是一個將參數傳遞給函數的Python特性。瞭解更多信息:http://pythontips.com/2013/08/04/args-and-kwargs-in-python-explained/ –