2

ツリービューに各エ​​ントリのボタンがあり、押すとact_windowアクションがトリガーされ、新しいポップアップウィンドウが開くopenerp顧客モジュールを構築していますが、同時にメインのgtkクライアントが消えました(ポップアップのみが残ります)。また、「ターゲット」を「新規」に設定しましたが、それでも同じです。何か案は?

クライアント: Windows の gtk-6.0.3

サーバー: debian 2.6.32 の 6.0.2

xml は次のようになります。

<field name="type">tree</field>
<field name="arch" type="xml">
    <tree string="Field Schema">
        <field name="field_name" />
        <field name="field_type" />
        <button name="edit" type="object" string="View and Edit" icon="gtk-go-forward" />
    </tree>
</field>

トリガーする編集機能は次のようになります。

def edit(self, cr, uid, ids, context=None):
    obj_name = some_fn_dynamic_get_obj_name_from_ids(ids)
    obj = self.pool.get(obj_name)
    if not obj:
        raise osv.except_osv('not supported')
    res_id = obj.create(....)
    ...
    return {
        'type': 'ir.actions.act_window',
        'name': 'View and Edit',
        'view_mode': 'form',
        'view_type': 'form',
        'res_model': obj_name,
        'res_id': res_id,
        'target': 'new',
        'context': context,
    }

更新:クライアントのソースにデバッグした後、最終的に次のことがわかりました:私はタイプミスをしました:正しいものはnodestroyでなければならないnodestory

    return {
        'type': 'ir.actions.act_window',
        ...
        'context': context,
        'nodestroy': True,
    }

T_T

4

2 に答える 2

0

明らかに間違っているものは何も見えません。このtarget属性については、開発者向けの本で説明されています。私が提案できる唯一のことは、ソースコードでtarget属性を使用する例を探し、それらがあなたのものとどのように異なるかを確認することです.

于 2012-04-19T22:52:14.983 に答える
0

クライアントが消えるのを止めるには、次を追加する必要があります: 'nodestroy': True,

于 2012-10-18T03:17:23.703 に答える