我在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