-2

以下は私のビューxmlとモデルクラスです。レコードを追加するフォームがあり、適切に機能します。しかし、その sub childs onchange イベントの値を設定する必要があります。ドキュメントからもこのリンクを参照します。

そして、モジュールGIT HUB REPOのコード全体を次に示します。

<field name='selected_tea_workers_line_ids' nolabel='1'>
<tree string='List' readonly='1'>
<field name='tea_line_worker_id' invisible="0" />
<field name='worker_id' />
<field name='is_selected' />
</tree>
</field>

    def on_change_division(self, cr, uid, ids, bpl_division_id):
        v = {}
        if bpl_division_id:
            work_offer = self.pool.get('bpl.work.offer').browse(cr, uid, 2)
            v['selected_tea_workers_line_ids'] = work_offer.selected_tea_workers_line_ids
            if work_offer.selected_tea_workers_line_ids:
                for record_item in work_offer.selected_tea_workers_line_ids:
                    v['tea_line_worker_id'] = record_item.selected_tea_workers_line_ids.tea_line_worker_id
                    v['worker_id'] = record_item.selected_tea_workers_line_ids.worker_id
                    v['is_selected'] = record_item.selected_tea_workers_line_ids.is_selected
        return {'value':v}

ここにアイデアがあります: 会社 -> 部門 -> を選択した場合、その部門に関連するすべての労働者 (リストとして名前と作品を持っています) をロードする必要があります。

以下に、サンプル写真を追加しました

ここに画像の説明を入力

答えを得ました

def on_change_division(self, cr, uid, ids, division_id):
    v = {}
    list_data = []
    if division_id:
        worker_ids = self.pool.get('bpl.worker').search(cr, uid, [('bpl_division_id', '=', division_id)])
        for record in self.pool.get('bpl.worker').browse(cr, uid, worker_ids):
            list_data.append({'worker_id': record.id})
        v['selected_tea_workers_line_ids'] = list_data
        return {'value':v}

クレジットはuser1576199に行く必要があります

4

1 に答える 1

2

私はあなたのコードで混乱しました。このコードの背後にあるログインが何であるか理解できません。あなたは何をしようとしているのですか

しかし、変更関数からone2manyフィールドに値を設定する方法の1つの例を示します

def on_change_code_id(self, cr, uid, ids, code_id, context=None):

    list_lines = []
    result = {'value': {}}
    req_obj = self.pool.get('code.requisition')

    data = req_obj.browse(cr, uid, code_id)

    for line in data.line_ids:
        list_lines.append({'product_id': line.product_id.id or False,
                           'product_qty': line.product_qty or 0,
                           'name': line.product_id.name,
                           'product_uom': line.product_uom_id.id,
                           'date_planned': time.strftime('%Y-%m-%d')
                        })

    result['value']['order_line'] = list_lines

    return result

ここに表示されているコードでは、one2many オブジェクト フィールドのすべての必要な値を指定する必要がある one2many に値を設定するために dict のリストを返す必要があります。この助けを願っています

于 2013-03-29T08:49:17.703 に答える