我的models.py
中有一个使用此静态方法的课程:
...
@staticmethod
def get_past_jobs():
return Job.query.filter(Job.date < datetime.datetime.utcnow()).all()
...
这通过构造表单时使用的(不相关的)past_jobs_pretty()
格式化函数(WTForms):
...
job = SelectField('Past Job', choices=past_jobs_pretty(), validators=[DataRequired()])
...
问题在于:在更新Job.date
时(通过SQLite浏览器),在重新启动开发服务器之前,更改不会反映在SelectField
中。
理论:我猜这是因为@staticmethod
在服务器启动时立即获取行。由于静态方法的性质,对get_past_jobs()
的后续调用将返回相同的行。
如果这是正确的,那么替代方案是什么?我尝试过使用@classmethod
,但无济于事 - 同样的结果。
期待一些帮助。
答案 0 :(得分:0)
关注this回答并将以下内容添加到相关表单中:
def __init__(self, *args, **kwargs):
super(FeedbackForm, self).__init__(*args, **kwargs)
self.job.choices = past_jobs_pretty()