Преобразуйте пустые входные данные из формы HTML во None во Flask, чтобы сохранить их как NULL в PostgreSQL - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть HTML-форма, которая обрабатывает запрос в приложении Flask.Если некоторые из входных данных являются пустыми строками, я хочу преобразовать их в None значения, так что я могу сохранить их как NULLs в БД PostgreSQL через SQLAlchamy.

Пока единственное, что работаетэто следующее:

# convert empty strings to None
if parts == "":
    parts = None
if car_model == "":
    car_model = None
if item_count == "":
    item_count = None

# save to db
sale = Sales(date=date, parts=parts, car_model=car_model,
             item_count=item_count, value=value)

Есть ли более элегантный способ сделать это?Я пробовал кое-что, но ничего не получилось.

Я прочитал, что вы можете указать значение None при получении ввода из формы:

parts = request.form.get('parts', None)

Я также попытался создать массив, а затем зациклить его.Проблема в том, что исходные переменные не меняются, переменные в наборе:

s = [parts, car_model, item_count)
for i, item in enumerate(s):
    if item == "":
        s[i] = None

Если бы у меня было намного больше переменных, создание оператора if для каждой из них было бы неэффективным.Есть ли более эффективный, более питонический способ?

1 Ответ

0 голосов
/ 12 декабря 2018

Вы можете сделать:

parts = request.form.get('Parts') or None

или

parts = request.form['Parts'] or None

, которые все равно будут возвращать 400, если «Детали» никогда не были в форме на первом месте.

если Parts в форме является пустой строкой, это гарантирует, что переменная parts станет None.

Пример консоли:

>>> print('' or None)
None

>>> print('hello' or None)
hello
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...