python - Flask App 中更改的数据在数据库中更新,但在运行时未在 App 中更新
问题描述
我有两张桌子: billtexts 和 zahlungsarten(付款方式)。每个 billtext 都有它自己的 zahlungsart(付款方式)。zahlungsarten 只是一个选择表 - 从中选择账单文本条目的 zahlungsarten。
通过添加新的账单文本(或修改一个),zahlungsart 条目可以在选择字段中选择。
我可以添加新的账单文本,一切正常。但是当我将一个新的 zahlungsart(或修改一个)添加到 zahlungsarten(选择表),然后返回到 billtext 表单并尝试添加/编辑一个 billtext 时,新的 zahlungsart 不会在运行时显示在 billtexts 的选择字段中(尽管它在数据库中!)。如果我重新启动应用程序,它会正确显示。
使用 Mixin 的函数生成 selection_values 没有区别......
不应该在运行时获取get_selection_values
实际数据?
我是否必须在运行时更新某些内容才能为选择字段获取新的插入/修改数据?
class SelZahlungsart(db.Model, GetSelectionValuesMixin):
__tablename__ = 'sel_zahlungsart'
idsel_zahlungsart = db.Column(db.SmallInteger, primary_key=True, info='id of the zahlungsart')
zahlungsart = db.Column(db.String(15), nullable=False, info='Bezeichnung der Zahlungsart')
class GetSelectionValuesMixin(object):
@staticmethod
def get_selection_values(q_object, q_field):
"""
Returns selection values of given table and column as a list.
:param q_object: the db.Model class
:param q_field: the db.Model class field
:return: all values from the given Model/field
"""
result = [r.field for r in db.session.query(q_object).with_entities(q_field.label('field')).distinct()]
#result = [r.field for r in q_object.query.with_entities(q_field.label('field')).distinct()]
return result
class TBilltext(db.Model):
__tablename__ = 't_billtexts'
textid = db.Column(db.Integer, primary_key=True)
...
zahlungsart = db.Column(db.String(15), nullable=False, unique=True, info='kind of payment')
class BilltextForm(FlaskForm):
"""
Form for admin to add/edit billextra
"""
...
zahlungsart = SelectField(choices=SelZahlungsart.get_selection_values(SelZahlungsart, SelZahlungsart.zahlungsart))
submit = SubmitField('Speichern')
和观点:
add_billtext = True
form = BilltextForm()
if form.validate_on_submit():
billtext = TBilltext(...,
zahlungsart=form.zahlungsart.data)
return (add_dataset(billtext, "Neuer Rechnungstext erfolgreich hinzugefügt",
"Fehler beim Hinzufügen des neuen Rechnungstextes!", "admin.list_billtexts"))
...
似乎 get_selection_values 仅在应用程序启动时运行一次。所以值永远不会被更新......但为什么每次调用它时它都不运行?
解决方案
推荐阅读
- r - R Markdown:如何使内联代码不执行?
- javascript - 需要 javascript DOM 帮助
- javascript - 弹出窗口立即消失
- r - 在 gt_table 中的 groupname 行中插入换行符
- mongodb - 其他集合的MongoDB聚合计数
- c# - 2 个控件的相同动画
- react-native - 在 navigation.reset 之后 React Native Deep 链接正在循环
- python-3.x - 您如何从 BeautifulSoup 结果中仅获取产品链接
- php - 如何从 PHP Docker 入口点中的脚本导出环境变量
- vue.js - 如何在vue组件中获取选择的选定文本