我正在使用odoo 10e . 我想要做的是我想在 fields_view_get
方法中设置域标准
@api.model
def fields_view_get(self, view_id=None, view_type='form', toolbar=False, submenu=False):
res = super(Customer, self).fields_view_get(
view_id=view_id, view_type=view_type, toolbar=toolbar, submenu=submenu)
doc = etree.XML(res['arch'])
if view_type == 'tree':
if self.env.user.partner_id.parent_id.id is False:
id = self.env.user.id
else:
id = self.env.user.partner_id.parent_id.id
doc.attrib['domain'] = "[('custodians','='," + str(id) + ")]"
for node_form in doc.xpath("//tree"):
node_form.attrib['duplicate'] = '0'
res['arch'] = etree.tostring(doc)
for node_form in doc.xpath("//form"):
node_form.attrib['duplicate'] = '0'
res['arch'] = etree.tostring(doc)
return res
这就是我尝试过的 . 但它不起作用 . 您可以看到我为什么要从后端设置域,因为我必须根据条件设置user_id .
如果我做错了或者有更好的方法,请告诉我 .
Edit
我已将保管人字段定义如下
custodians = fields.Many2one('res.users', string="Custodian", domain=[('groups_id', 'in', [12])],
readonly=[('readonly_custodian', '=', True)])
实际上当一个登录用户创建 Customer
记录时,我们将他设置为 Customer
的保管人,我想要做的就是当该用户再次登录时他应该能够看到他和他的父母监护人记录
1 回答
看起来您应该能够通过修改加载树视图的action上的
domain
来实现此行为 .可以通过两种方式定义Window Actions,但无论哪种方式,重要的部分都是
domain
值 .Old answer:
第一种方式:
第二种方式:
EDIT:
由于
domain
似乎无法访问user
,我认为这可能有效:Record Rule
注意:这是一个全局规则,因此您可能希望强制删除某些组(如经理)
EDIT 2:
正如我们在聊天中发现的那样,您问题所针对的域名是: