我正在使用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端点时如何加载供应商列表,以便供应商下拉列表更改?
答案 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循环,最后只需要执行一次。