如何在每次访问API端点时加载WTF Form类

时间:2015-11-20 02:19:10

标签: python python-3.x flask wtforms

我正在使用Flask WTF Form,它依赖于从API加载供应商列表。这个供应商列表会发生变化,但是我发现每次点击新项目路径时(我原本希望重新创建NewItemForm类)都会从内存中加载旧类。供应商API路径在对象创建时只被命中一次

所以我将我的代码更新为这个非功能性的例子:我给了它最好的镜头,但我想做的是每当我点击新的库存项目路径时,当我创建{{{ 1}}以便每次加载表单时供应商列表都会更改。我尝试通过创建一个方法来做到这一点。

解决这个问题的pythonic方法是什么?

api.py

NewItemForm()

form.py

@inventory.route('/inventory/new', methods=['GET', 'POST'])
def new_item():
    form = NewItemForm()
    form.update_vendors() 

每次点击new_item端点时如何加载供应商列表,以便供应商下拉列表更改?

1 个答案:

答案 0 :(得分:0)

问题是您使用

绑定字段

vendor_code = SelectField('Vendor', choices = self.sorted_by_vendors, ...

类级别的字段choices属性绑定到该列表的引用,然后替换sorted_by_vendors以引用新列表,.choices属性仍然指向旧的参考副本。

最简单的解决方法是在update_vendors()

中进行此更改

self.vendor_code.choices = sorted(vendorOptions, key=lambda tup: (tup[1], tup[0]))

您也可以将其移出for循环,最后只需要执行一次。