3

ビューまたは.pyのフィールド定義で動的ドメイン方程式を与えたいです。

お気に入り

<field name="product_id" domain="[('name','in',get_names)]"/>

product_id は many2one フィールドです。

get_names は、実行時にリストを作成する関数です。

エラーが表示されます-「名前 'get_names' は定義されていません」

何か案は。

私も次のことを試しました。

'product_id': fields.many2one('mymodule.relation.model','Title',selection=get_names)

これにより、mymodule.relation.model 内のすべてのエントリが表示されます。それが行う唯一のことは、ユーザーが選択/送信した値が「get_names」に属しているかどうかを検証することです。

4

4 に答える 4

2

fields_view_get() 関数を継承し、ドメインの状態を管理します。これらの投稿を確認してください

  1. OpenERP で動的ビューを作成する方法
  2. 他のフィールド値に基づいて OpenERP 選択フィールドの選択肢を変更するにはどうすればよいですか?
于 2012-11-09T14:14:19.447 に答える
2

1- 次のように関数フィールドを使用できます。

def _get_domain(self, cr, uid, ids, field_name, arg, context=None):
    record_id = ids[0] 
    # do some computations....
    return {record_id: YOUR DOMAIN} 

および関数フィールド:

'domain_field': fields.function(_get_domain, type='char', size=255, method=True, string="Domain"),

xml (ドメイン属性) のフィールドの名前を使用します。

<field name="product_id" domain="domain_field" />

2-「fields_view_get」を使用できます:

def fields_view_get(self, cr, uid, view_id=None, view_type='form', context=None, toolbar=False, submenu=False):
    res = super(taskmng_task, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar, submenu=submenu)
    doc = etree.XML(res['arch'])
    for node in doc.xpath("//field[@name='project_id']"):
        # do some computations....
        node.set('domain', YOUR DOMAIN)
    res['arch'] = etree.tostring(doc)
    return res
于 2013-06-26T09:00:03.260 に答える
0

ドメイン式では関数またはメソッドを使用できません。オブジェクト フィールドのみを使用してください。同等ではありませんが、最も近いのは、ドメイン式で使用する関数フィールドを作成することです。

于 2012-11-08T21:46:28.507 に答える
-3

正確な要件がわからないため、これら2つのいずれかが役立つ可能性があります

http://ruchir-shukla.blogspot.in/2010/11/domains-value-depending-on-condition.html

または、Account Invoice 製品 onchange を確認してください。onchange からドメインを返すことができます。

于 2012-11-08T10:48:40.330 に答える