Python Flask WTForms动态表单依赖项selecField未在编辑页面中填充

Python Flask WTForms动态表单依赖项selecField未在编辑页面中填充,python,flask,wtforms,Python,Flask,Wtforms,在编辑页面中,我需要重新填充表单,在我的表单中,我有三个selectField,它们相互连接以填充。但我的第一个selectField在编辑页面中重新填充后未选择正确的值,并且我的代码中没有错误 这是我的场景,当我在表中单击“编辑”时。数据将以编辑形式填充。但车辆选择字段未选择正确的车辆。见下图 如何在编辑页面中重新填充数据并在selectedfield中选择正确的值 这是我的代码: views.py 这是我在github的全部内容。 我希望有人能修复我的错误。 高级谢谢。我建议您按照这些教程的

在编辑页面中,我需要重新填充表单,在我的表单中,我有三个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)