2016-04-03 8 views
0

私はweb2pyでサンプルアプリケーションをやっています。web2pyで請求書を生成/印刷する方法は?

db=DAL('sqlite://Navale.db') 
db = DAL(lazy_tables=True) 

STATE= ('Andaman and Nicobar Islands','Andhra Pradesh','Arunachal Pradesh','Assam','Bihar','Chandigarh',' Chhattisgarh','Dadra and Nagar Haveli','Daman and Diu','Delhi','Goa','Gujrat','Haryana','Himachal Pradesh','Jammu and Kashmir','Jharkhand',' Karnataka','Kerala','Lakshadeep','Madhya Pradesh','Maharashtra','Manipur','Meghalaya','Mizoram','Nagaland','Odisha','Puducherry','Punjab','Rajasthan','Sikkim','Tamil Nadu','Telangana','Tripuru',' Uttar Pradesh','Uttarakhand','West Bengal') 

db.define_table('Customer', 
       Field('Customer_ID', type='id', requires=IS_NOT_EMPTY()), 
       Field('Customer_Type', requires=IS_IN_SET(['Retail','Local'])), 
       Field('Name', type='string', requires=IS_NOT_EMPTY()), 
       Field('Contact_Number', type='integer', requires=IS_NOT_EMPTY()), 
       Field('Address', type='string'), 
       Field('City', type='string', requires=IS_NOT_EMPTY()), 
       Field('State', requires=IS_IN_SET(STATE)), 
       Field('PIN', type='integer', requires=IS_NOT_EMPTY()) 
       ) 
db.define_table('Product', 
       Field('Product_ID', requires=IS_NOT_EMPTY()), 
       Field('Product_Name'), 
       Field('Category', requires=IS_IN_SET(['Gents', 'Ladies', 'Kids'])), 
       Field('Rate', type='double')) 
db.define_table ('Bill', 
       Field('Bill_ID', type='id', requires=IS_NOT_EMPTY()), 
       Field('Date', type='datetime'), 
       Field('Customer_ID', db.Customer), 
       Field('Customer_Name', db.Customer), 
       Field('Total_cost', type='double')) 

以下のように私は/プリントを生成したい私は「ビル」で顧客名を追加しようとすると、それは

enter image description here

エラーを示している顧客、製品、ビルを含み 商品詳細 の情報(製品名、製品タイプ、数量、価格など)、および すべての製品の合計金額を含む請求書。

私を助けてください。

注:ここでBillは、動的な値の商品で構成されています。つまり、Billは1/2/3 /.../n個の製品を持つことができます。

答えて

3

web2pyでは、参照フィールドは、参照テーブルの整数 "id"フィールドである参照テーブルの主キーを格納します。したがって、 "Customer_Name"フィールドを参照フィールドとして定義するのは意味がありません(おそらく、そのようなフィールドは名前を格納しますが、参照フィールドは整数IDを格納します)。 "Customer_ID"フィールドはすでに "Customer"テーブルへの参照であり、 "Customer"テーブルへの追加参照は必要ありません。したがって、単に "Customer_Name"フィールドを削除する必要があります。

db.define_table('Customer', ..., format='%(name)s') 

、あなたのような、「顧客」テーブルを参照するフィールドを定義する任意の時間:

注意、あなたは「顧客」テーブルの「形式」属性を追加することができます

Field('Customer_ID', db.Customer) 

リファレンスフィールドには、(顧客)レコードIDがデータベースに挿入されていても、顧客名を示すデフォルトフォームウィジェットと、(b)表示されるデフォルトの「represent」属性読み取り専用フォームとグリッドの顧客IDではなく顧客名。

請求書または請求書と一緒に顧客の詳細にアクセスする必要がある場合は、joinでアクセスできます。 web2pyに組み込まれているrecursive selects機能を利用することもできます。

+0

請求書のCustomer_IDから顧客情報を引き出す方法は? –

+0

編集された回答を参照してください。結合または再帰的選択を使用できます。 – Anthony

関連する問題