使用 Flask 和 wtform 实现 Python 日期时间增量

Implement Python datetime delta with Flask and wtform

使用 flask 和 wtforms 我想控制用户输入的 date_fromdate_to


now = datetime.today()
two_month_ago = now - timedelta(days=60)
date_from = DateTimeField('date_from', format='%Y%m%d',validators=[DateRange(min=anchor_date, max=None, format='%Y%m%d')], default=two_month_ago)
date_to = DateTimeField('date_to', format='%Y%m%d',validators=[DateRange(min=anchor_date, max=None, format='%Y%m%d')], default=now)

此代码运行良好,但我发现返回的数据始终相同。调试后的原因是现在它正在被存储。为了解决这个问题,有人提到直接使用 datetime.today 而不是 datetime.today()。但是我已经不能再用两个月前的delta来计算了。如何克服这个问题?

我认为你需要将默认设置为可调用。

from datetime import datetime, timedelta

def two_months_ago():
    return datetime.today() - timedelta(days=60)

class MyForm(FlaskForm):
    date_from = DateTimeField(
        'date_from', 
        format='%Y%m%d',
        validators=[DateRange(min=anchor_date, max=None, format='%Y%m%d')],
        default=two_month_ago()
    )
    date_to = DateTimeField(
        'date_to', 
        format='%Y%m%d', 
        validators=[DateRange(min=anchor_date, max=None, format='%Y%m%d')], 
        default=datetime.today()
    )