【发布时间】:2018-04-29 04:16:28
【问题描述】:
我的models.py 中有一个类,里面有这个静态方法:
...
@staticmethod
def get_past_jobs():
return Job.query.filter(Job.date < datetime.datetime.utcnow()).all()
...
这通过构造表单(WTForms)时使用的(无关的)past_jobs_pretty() 格式化函数:
...
job = SelectField('Past Job', choices=past_jobs_pretty(), validators=[DataRequired()])
...
问题是:更新Job.date(通过SQLite 浏览器)时,更改不会反映在SelectField 中,直到我重新启动开发服务器。
理论:我猜这是由于@staticmethod 在服务器启动时立即获取行。由于静态方法的性质,对get_past_jobs() 的后续调用将返回相同的行。
如果这是正确的,还有什么选择?我曾尝试使用@classmethod,但无济于事——结果相同。
期待一些帮助。
【问题讨论】:
标签: python flask orm flask-sqlalchemy flask-wtforms