【问题标题】:Form Data not refreshing with newest entries表单数据不刷新新条目
【发布时间】:2016-08-23 18:48:52
【问题描述】:

当我在客户表中添加新客户并访问 AddOrderForm 表单时,我没有在选择中获得新客户。但是在服务器重新启动时,我能够在选择列表中获得新客户。任何原因?

客户表

class Customer(db.Model):
     id = db.Column(db.Integer, primary_key=True)
     email = db.Column(db.String(120), unique=True)
     mobile_num = db.Column(db.String(13), unique=True)
     name = db.Column(db.String(120))
     marketing_source = db.Column(db.String(120))
     date_of_birth = db.Column(db.DateTime)
     gender = db.Column(db.String(13))
     store_id = db.Column(db.Integer, db.ForeignKey('store.id'))

     def __init__(self,email,mobile_num,name,marketing_source,date_of_birth, gender,store_id):
         self.email = email
         self.mobile_num = mobile_num
         self.name = name
         self.marketing_source = marketing_source
         self.date_of_birth = date_of_birth
         self.gender = gender
         self.store_id = store_id
     def __repr__(self):
          return '%r, %s ' % (self.name.encode('utf-8'), self.mobile_num)

添加订单表格

class AddOrderForm(Form):
    order_id  = TextField('Website Order Id', [validators.length(min=4, max=120)])
    item_name = TextField('Item Name', [validators.length(min=4, max=120)])
    item_cost = DecimalField('Item Cost' , [validators.Required()])
    custmer_id = SelectField('Customer',coerce=int,choices= convert_list_wtforms_choices(Customer.query.all()))
    order_category = SelectField('Order Category',coerce=int,choices=[(1,'Mobiles'), (2,'Clothing')])
    linq_shipping_cost =  DecimalField('Linq Shipping Cost' , [validators.Required()])
    website_shipping_cost = DecimalField('Website Shipping Cost' , [validators.Required()])
    advance_amount = DecimalField('Advance Amount' , [validators.Required()])
    website = SelectField('Website', coerce=int,choices=[(1,'Amazon'), (2,'Flipkart')] )
    other = TextField('Any Other Information')

从视图访问表单时,我没有在 custmer_id 选项中获得最新添加的客户。有什么办法解决这个问题吗?

【问题讨论】:

  • 刷新表单所在的页面时新客户也没有出现?因为如果您在同一页面上有表单,那么您正在创建一个新客户并且该页面没有刷新,那么您不会看到客户是有道理的吗?该页面将数据库中的所有当前客户加载到表单中(此时您的新客户不存在)。
  • 进入客户后,我正在访问 AddOrderForm。基本上新客户已经在数据库中了。我已经验证过了。

标签: python flask flask-sqlalchemy flask-wtforms


【解决方案1】:

您只需在定义表单时设置一次选项。而是在每次实例化表单时重新选择它们。

class AddOrderForm(Form):
    customer_id = SelectField('Customer', coerce=int)

    def __init__(self, *args, **kwargs):
        super(AddOrderForm, self).__init__(*args, **kwargs)
        self.customer_id.choices = convert_list_wtforms_choices(Customer.query.all())

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-16
    • 1970-01-01
    • 2019-05-26
    • 2017-10-16
    • 2017-07-24
    • 1970-01-01
    相关资源
    最近更新 更多