Python Flask - 如何为表单中的日期类型设置默认值 NULL

Python Flask - How to set a default value of NULL for type Date in a form

我有一个 HTML 表单来更新字段值。在此表单中,我有一个名为 app_deadlines 的字段,其类型为 Date:

my_data.app_deadlines = datetime.datetime.strptime(request.form['app_deadlines'], "%Y-%m-%d")

如果我将该字段留空并按下提交按钮进行更新,则会抛出如下所示的错误。

ValueError: time data '' does not match format '%Y-%m-%d'

^^因此,不会发生数据库更新。

本质上,当我更新时它不会将属性保留为 NULL(这就是它在我的 SQLite 数据库中的存储方式 table),那么如何设置它以使其接受 NULL?它不会让我做 or None,它适用于另一个领域:

my_data.cfda_no = request.form['cfda_no'] or None

Date 类型的默认 NULL 值可以是多少,以便它仍以“%Y-%m-%d”格式存储?

Class 查看:

class FundingSource(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    complete = db.Column(db.String(10), default=False, nullable=False)
    department = db.Column(db.String(100), nullable=False)
    agency = db.Column(db.String(150), nullable=False)
    cfda_no = db.Column(db.Float(), nullable=True)
    app_deadlines = db.Column(db.Date(), nullable=True)

烧瓶视图:

@main.route("/update", methods=['GET', 'POST'])
def update():
    if request.method == 'POST':
        my_data = FundingSource.query.get(request.form.get('id'))

        my_data.complete = request.form['complete']
        my_data.department = request.form['department']
        my_data.agency = request.form['agency']
        my_data.cfda_no = request.form['cfda_no'] or None
        my_data.app_deadlines = datetime.datetime.strptime(request.form['app_deadlines'], "%Y-%m-%d")

感谢任何帮助!谢谢!

您似乎在未提供日期时遇到错误,因此您希望能够同时接收日期和 None 值。因为 datetime.datetime.strptime() 只接受日期值,您可以使用内联语句添加逻辑检查来处理 None 值:

my_data.expiration_funds = datetime.datetime.strptime(request.form['expiration_funds'], '%Y-%m-%d') if request.form['expiration_funds'] else None