web-dev-qa-db-ja.com

many2many odoo(以前のopenerp)に挿入します

Oodoo(以前のOpenERP)のmany2manyまたはone2manhyのリレーションテーブルに値を挿入しようとしています。これを行う方法はありますか?

23
m3asmi

ストックモジュール の例を次に示します。

_invoice_line_id = invoice_line_obj.create(cursor, user, {
    'name': name,
    'Origin': Origin,
    'invoice_id': invoice_id,
    'uos_id': uos_id,
    'product_id': move_line.product_id.id,
    'account_id': account_id,
    'price_unit': price_unit,
    'discount': discount,
    'quantity': move_line.product_uos_qty or move_line.product_qty,
    'invoice_line_tax_id': [(6, 0, tax_ids)],
    'account_analytic_id': account_analytic_id,
    }, context=context)
self._invoice_line_hook(cursor, user, move_line, invoice_line_id)
_

_invoice_line_tax_id_フィールドは多対多の関係であり、_(6, 0, tax_ids)_は既存のレコードを_tax_ids_のレコードで置き換えることを意味します。 create()を呼び出しているため、置き換えるものは何もありません。

オプションの完全なリストは osvクラスのドキュメント にあります。

Many2manyフィールドの場合、タプルのリストが期待されます。受け入れられるTupleのリストを、対応するセマンティクスとともに示します

_(0, 0, { values })_指定された値ディクショナリで作成する必要がある新しいレコードへのリンク

_(1, ID, { values })_ id = IDでリンクされたレコードを更新します(その上にvaluesを書き込みます)

_(2, ID)_ id = IDのリンクされたレコードを削除および削除します(IDでunlinkを呼び出します。これにより、オブジェクトが完全に削除され、そのリンクも同様に削除されます)

_(3, ID)_ id = IDのリンクされたレコードへのリンクを切断します(2つのオブジェクト間の関係を削除しますが、ターゲットオブジェクト自体は削除しません)

_(4, ID)_ id = IDの既存のレコードへのリンク(関係を追加)

_(5)_すべてのリンクを解除します(リンクされたすべてのレコードに(3、ID)を使用するなど)

_(6, 0, [IDs])_は、リンクされたIDのリストを置き換えます(IDのリスト内の各IDに対して(5)、次に(4、ID)を使用するなど)

43
Don Kirkby
def list_customers(self, cr, uid, ids, context):
    sale_obj = self.pool.get('sale.order')
    for sale in self.browse(cr, uid, ids, context):
        sale_ids = sale_obj.search(cr, uid, [('div_code_id','=',sale.div_code_id.id),('project_user','=',sale.project_id.id),('tower_id','=',sale.tower_id.id)])
        ids_cus = []
        for cus in sale_obj.browse(cr, uid, sale_ids, context):
            if cus.partner_id.id not in ids_cus:
                ids_cus.append(cus.partner_id.id)
        self.write(cr, uid, ids, {'state_readonly':'listed','customer_ids': [(6, 0, ids_cus)]})
    return True

OpenERPの多対多のリレーションテーブルに値を挿入できます。上記の例をご覧ください

7
MKUMAR

Many2manyフィールドを作成するとき、次の構文を使用しました。

'field_name':fields.many2many('Module_name','relation_name','self_id','module_name_id','string', 

次のようなクエリを実行して、このリレーションに挿入する必要があります。

 $ cr.execute('insert into relation_name (self_id,module_name_id) values(%s,%s)',(first_value,second_value)
3
Anup

ビュー(xmlファイル)にmany2manyフィールドを配置するだけで、モジュールを実行した後、guiにレコードを挿入するためのmany2manyフィールドが表示されます。

0
Sudhir Arya