2017-06-20 11 views
1

3件の受注記録を作成しようとしていますが、まだできませんでした。 しかし、1つの項目でレコードを作成することはできます。複数の項目を追加する方法がわからない場合は、 次のコードは、私は、それが1つまたは失敗を作成することができ 3件の受注記録を作成するためのOdoo WebサービスAPI

line_vals = { 
    'product_id': product2_ids[0].get('id'), 
    'name':'test', 
    'product_uom_qty': 10, 
    'price_unit': 30000, 
} 

order_vals = { 
    'partner_id': customer_ids[0].get('id'), 
    'validity_date': datetime.datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S'), 
    'order_line': [(0, 0, line_vals)], 
} 

salesorder = objects.execute_kw(db, uid, pwd, 'sale.order', 'create', [order_vals]) 

は、多くの項目のために、このコードを変更しようとした1つの項目にレコードを作成助けた様々なケースを試してみました。 提案がありますか?

答えて

0

一般的に次の2つの方法でOne2manyフィールドを管理することができ、いずれかのフレームワークが自動的にone2many管理しますかあなたはタプルのリストを作成し、直接それが親レコードだとone2manyフィールドを書くことができますので、逆モデルでmany2one参照を書くことができます。

アカウントの請求書と請求書の行の例を考えてみましょう。したがって、請求書行を作成する場合は、最初にaccount.invoiceレコードを作成してから、データの準備時にすべての請求書明細書にその請求書の参照を渡すか、またはアカウント請求書データを準備するか、請求書行データ(タプルのリスト)を作成してaccount.invoiceに渡します。

ここで2番目の方法が使用されます。

(0、0、{値}):指定された値の辞書で作成する必要がある新しいレコードへのリンク。 [(0、0、{値})、(0,0、{値})、(0,0、{値})などのタプルのリストを作成することができます。 ]。

に複数の行を同じ順序で作成する必要があります。

order_lines=[] 

for product in products: 
    line_vals = { 
     'product_id': product.id, 
     'name':'product.name, 
     'product_uom_qty': product.product_uom_qty, 
     'price_unit': product.price_unit, 
    } 
    order_lines.append((0, 0,line_vals)) 

order_vals = { 
    'partner_id': customer_ids[0].get('id'), 
    'validity_date': datetime.datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S'), 
    'order_line':order_lines, 
} 

salesorder = objects.execute_kw(db, uid, pwd, 'sale.order', 'create', [order_vals]) 

これは役立ちます。

+0

私はJavaを使用していますが、上記のとおりです。リスト[0,0、{}]のリストとして2つのアイテムを追加すると、売上レコードのみが作成されます。アイテムは作成されません。しかし、[0,0、{}]リストに1つの項目しか追加しないと、レコード&アイテムが作成されます。これは奇妙です – Integration

関連する問題