【发布时间】:2019-12-19 16:46:35
【问题描述】:
我有要在编辑页面中重新填充的表单,在我的表单中,我有三个相互连接的 selectField 来填充。但是我的第一个 selectField (Cars) 在编辑页面中重新填充后没有选择正确的值,并且我的代码没有错误。
这是我的场景,当我单击表格中的编辑时。数据将以编辑形式填充。但是 Car selectedField 没有选择正确的汽车。见下图...
如何重新填充编辑页面中的数据并在选定字段中选择正确的值?
这是我的代码:
views.py
@bp.route('/edit_orders/<int:obj_id>/edit', methods=['GET'])
def edit_orders(obj_id):
orders = Order.query.get(obj_id)
form = OrderForm(obj=orders)
form.cars.choices = [(c.id, c.car) for c in Car.query.order_by('id')]
form.models.choices = [(m.id, m.model) for m in Model.query.filter(Model.car_id == orders.cars.id).all()]
form.versions.choices = [(v.id, v.version) for v in Version.query.filter(Version.model_id == orders.models.id).all()]
return render_template('edit_order.html', title="Edit Orders", form=form)
model.py
class Car(Base):
__tablename__ = 'cars'
id = Column(Integer, primary_key=True)
car = Column(String(128), nullable=False)
models = relationship("Model", back_populates="cars") # relationship
orders = relationship("Order", back_populates="cars")
def __init__(self, car=None):
self.car = car
def __repr__(self):
return '<Car %r>' % self.car
@property
def serializable(self):
return {'id':self.id, 'car':self.car}
form.py
# -*- coding: utf-8 -*-
from flask_wtf import Form
from wtforms import SelectField, TextField, validators
class OrderForm(Form):
cars = SelectField(u'Car', coerce=int)
models = SelectField(u'Model', choices=[('', '--choose--')])
versions = SelectField(u'Version', choices=[('', '--choose--')])
customer_name = TextField(u'Customer', [validators.InputRequired('Customer is required.')])
这都是我在 github 中的 source code。 我希望有人可以修复我的错误/错误。 谢谢高级。
【问题讨论】:
-
你的问题不是很清楚,你能解释清楚是什么问题吗?
-
我的问题是,加载编辑表单时,我无法重新填充数据并在 selectedField car、model 和 version 中选择正确的数据。
-
如果我使用 .filter_by() 我的 selectField 只有一行数据。