我正在使用odoo 10e。我想要做的就是我想设置里面fields_view_get
方法Odoo - 如何从后端设置域名过滤器
@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。
请让我知道如果我做错了或有什么更好的方法。
编辑
我已经定义托管领域遵循
custodians = fields.Many2one('res.users', string="Custodian", domain=[('groups_id', 'in', [12])],
readonly=[('readonly_custodian', '=', True)])
实际上当过一的loggedIn用户创建Customer
记录,我们把他作为该Customer
保管人和所有我想做的事是当用户再次登录时,他应该能够看到他和他的父母监护人记录
你应该很少需要重写'fields_get'。你究竟想达到什么目的? – travisw
我想从后端动态地在树视图上添加域过滤器。所以我可以有基于条件的域名过滤器 – Ancient
看到这个检查下的所有东西'if view_type =='tree''。这是我想要在域 – Ancient