我在WTForms中设置FieldForm的默认值时遇到问题。WTForm FormField填充值
models.py
class RepairCategory(db.Model): name = ... class Repair(db.Model): price = .. category_id [FK] = ... product_id [FK] class Product(db.Model): name = ... description = ... color = ...
ProductBase只包含属性,这些属性相匹配的产品型号分贝。
forms.py
class NewRepair(Form):
#this is okay - it get's populated
repair_category = QuerySelectField("Repair category",
query_factory=get_categories)
price = DecimalField()
class ProductBase(Form):
name = StringField("Name ", validators=[DataRequired(), Length(1, 64)])
color = StringField("Color ", validators=[DataRequired(), Length(1, 64)])
description = TextAreaField("Description")
active = BooleanField()
class Product(Form):
base_product = FormField(ProductBase)
add_repairs = FormField(NewRepair)
submit = SubmitField('Submit')
的add_repairs包含我想在视图中使用创建修复的一种形式。 base_product是一个表单,理想情况下,我希望在视图中传递obj = product,因此默认值将自动填充。我也想使用form.populate_obj()以及base_product表单。
这里就是我如何在视图中创建的产品形式:
def make_product_form(form=None, product=None, **kwargs):
form = form()
form.base_product.obj = product
return form
然后,处理职位时,我想做的事:
def product(id):
product = Product.query.get_or_404(id)
form = make_product_form(form=Product,product=product)
if form.validate_on_submit():
product_form = form.base_product
product_form.populate_obj(product)
然而,从产品形式base_form,没有被填充来自现有对象的默认值。
有关如何实现此目的的任何建议? 谢谢:)
您的'make_product_form'函数不会抛出'AttributeError'异常吗?在ProductBase类中没有'obj'属性,所以'form.base_product.obj = product'行不能运行。您也没有发布“EditProduct”类的代码。 – kchomski