使用wtform时populate_obj一直是一个非常方便的方法,不同于其他语言,python的这种方式显得理所当然。它的作用很简单,就是将表单中同名的属性赋值给对象。
TypeError: populate_obj: cannot find a value to populate from the provided obj or input data/defaults
只要使用这个方法,上面错误可谓是常见,debug也没有告知到底是哪一个的值出现问题。这里给一个能覆盖99%问题的思路,就是它在赋值时要么是名字不对应找不到,要么是赋值的对象为空。今天一个表单之前还工作正常加了一个属性后就挂了,偏偏是一个‘FieldList’,关于这个字段类型,需要在初始化中告知它赋值的对象类型,比如:FieldList(FormField(InvoiceForm,default=Invoicedetail), min_entries=1)