我想在视图中或.py。
中的字段定义中给出动态域方程像
<field name="product_id" domain="[('name','in',get_names)]"/>
product_id是一个很多字段。
get_names是在运行时创建列表的函数。
显示错误 - “名称'get_names'未定义”
任何想法。
我也尝试了以下内容。
'product_id': fields.many2one('mymodule.relation.model','Title',selection=get_names)
这将显示mymodule.relation.model中的所有条目。它唯一能做的就是验证用户选择/提交的值是否属于'get_names'。
答案 0 :(得分:2)
继承fields_view_get()函数并管理域条件。请查看这些帖子
答案 1 :(得分: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(domain attr)中字段的名称:
<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
答案 2 :(得分:0)
您不能在域表达式中使用函数或方法,只能使用对象字段。 它不是等价的,但最接近的是创建一个在域表达式中使用的函数字段。
答案 3 :(得分:-3)
由于不知道您的具体要求,但可能是这两个人中的任何一个可以帮助您
http://ruchir-shukla.blogspot.in/2010/11/domains-value-depending-on-condition.html
或检查更改帐户发票产品。您可以从onchange返回域。