2016-08-23 8 views
-1

顧客テーブルに新しい顧客を追加して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) 

AddOrderForm

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の選択肢で、最新の追加顧客を得ることはありませんビューからフォームにアクセスしながら。これを修正するための任意のアイデア?

+0

フォームが更新されても、新しい顧客は表示されませんか?同じページにフォームを作成している場合、新しい顧客を作成していて、そのページは更新されないので、顧客の権利が表示されないことになります。このページでは、DB内のすべての現在の顧客をフォームにロードします(この時点では、新しい顧客は存在しません)。 –

+0

お客様に入力した後、私はAddOrderFormにアクセスしています。基本的に新しい顧客はすでにデータベースに入っています。私はそれを確認しました。 –

答えて

1

フォームを定義するときに選択肢を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()) 
関連する問題