【问题标题】:Flask-SQLAlchemy @staticmethod delayFlask-SQLAlchemy @staticmethod 延迟
【发布时间】: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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-07
      • 2019-10-02
      • 1970-01-01
      • 1970-01-01
      • 2020-08-20
      • 2011-08-25
      • 2015-03-25
      • 2018-06-14
      相关资源
      最近更新 更多