Python Flask WTForms动态表单依赖项selecField未在编辑页面中填充
在编辑页面中,我需要重新填充表单,在我的表单中,我有三个selectField,它们相互连接以填充。但我的第一个selectField在编辑页面中重新填充后未选择正确的值,并且我的代码中没有错误 这是我的场景,当我在表中单击“编辑”时。数据将以编辑形式填充。但车辆选择字段未选择正确的车辆。见下图 如何在编辑页面中重新填充数据并在selectedfield中选择正确的值 这是我的代码: views.py 这是我在github的全部内容。 我希望有人能修复我的错误。Python Flask WTForms动态表单依赖项selecField未在编辑页面中填充,python,flask,wtforms,Python,Flask,Wtforms,在编辑页面中,我需要重新填充表单,在我的表单中,我有三个selectField,它们相互连接以填充。但我的第一个selectField在编辑页面中重新填充后未选择正确的值,并且我的代码中没有错误 这是我的场景,当我在表中单击“编辑”时。数据将以编辑形式填充。但车辆选择字段未选择正确的车辆。见下图 如何在编辑页面中重新填充数据并在selectedfield中选择正确的值 这是我的代码: views.py 这是我在github的全部内容。 我希望有人能修复我的错误。 高级谢谢。我建议您按照这些教程的
高级谢谢。我建议您按照这些教程的顺序学习,以便您的应用程序结构能够符合这些要求,然后您可以相应地重新设计应用程序。我试图查看您的代码,但它不是那么容易遵循,所以我不确定我或任何人现在可以帮助 如果您对使用示例数据填充数据库感兴趣,可以查看或 注 修复base.html中的这一行,因为它链接到一个文件,而该文件在从github页面下载的应用程序文件中并不存在
也可以从文件add_order.html、index.html和edit_order.html中删除这一行,因为这是不必要的。Hi Sukma Saputra您使用什么来生成编辑页面中的查看+分页和搜索框 我从他那里得到了答案 这是我的更新代码,用于在编辑页面中填充表单selecField views.py 我在表单字段中设置了默认数据,并使用form.process调用构造函数并在selectField中给出所选值 对于所有代码,你可以在我的
快乐编码。您的问题不太清楚,请您解释清楚问题是什么?我的问题是,在加载编辑表单时,我无法重新填充数据并在selectedField car、model和version中选择正确的数据。如果我使用。按我的selectField筛选\u只有一行数据。谢谢@kellymandem您的回答对我意义重大。但这并不能回答我的问题,所以我不能接受。我会阅读你建议的链接。请注意,您的答案是,您可以阅读README.md文件来运行源表单github。@SukmaSaputra欢迎您,是的,我确实阅读了README.md文件,并按照其中的说明在我的计算机上本地运行应用程序。谢谢您,我在您的github存储库中看到了它:我希望您解决您的问题。
@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)
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}
# -*- 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.')])
@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.car.choices = [(c.id, c.car) for c in Car.query.all()]
form.model.choices = [(m.id, m.model) for m in Model.query.filter(Model.car_id == orders.cars.id).all()]
form.version.choices = [(v.id, v.version) for v in Version.query.filter(Version.model_id == orders.models.id).all()]
form.car.default = orders.cars.id
form.model.default = orders.models.id
form.version.default = orders.versions.id
form.customer_name.default = orders.customer_name
form.process()
return render_template('edit_order.html', title="Edit Orders", form=form)