Flask-SQLAlchemy @staticmethod延迟

时间:2018-04-29 04:16:29

标签: python flask orm flask-sqlalchemy flask-wtforms

我的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,但无济于事 - 同样的结果。

期待一些帮助。

1 个答案:

答案 0 :(得分:0)

关注this回答并将以下内容添加到相关表单中:

def __init__(self, *args, **kwargs):
    super(FeedbackForm, self).__init__(*args, **kwargs)
    self.job.choices = past_jobs_pretty()
相关问题