Я пытаюсь создать запрос, который принимает данные формы и удаляет любые сообщения None
или " "
, но я не уверен, как подойти к логике. Вот код;Удалить объекты из запроса, если None или Null
@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)
Потому что это бэкэнд страницы, которая позволяет пользователям фильтровать, а не явно искать, некоторые данные формы пустые. Это вызывает запрос для поиска результатов, где одна или несколько форм == Нет.
Пример: пользователь вводит 100 в форме лошадиной силы и оставляет затухание оборотов и напряжение. Запрос не возвращает никаких результатов, хотя есть строки с мощностью 100 лошадиных сил, потому что он ищет строки, где Horsepower == 100 и RPM и Voltage == None.
Я пробовал использовать filter(None, object)
без каких-либо успехов и думаю, что решение может быть где-то в использовании kwargs
.
Я знаю, что мне нужно передать все данные формы, чтобы удалить None
или Null
записей, а затем передать их в окончательный аргумент Motor.query.filter_by
, я просто не знаю, как это сделать.
Спасибо! Это действительно помогло мне разобраться. Мне просто трудно понять, как аргументы filter_by() могут понять kwarg и интерпретировать его в правильном формате, даже если это dict? Является ли это особенностью SQLAlchemy, способной переводить словарь в модели и наоборот? – xGlorify
Нет, это на самом деле функция Python для передачи параметров функции. Узнайте больше: http://pythontips.com/2013/08/04/args-and-kwargs-in-python-explained/ –