我需要帮助Odoo 11中的一些自定义规则配置。
目前,我正在执行一项允许用户仅访问某些产品类别的规则,因为我有一个指定这些类别的Many2many字段:
product_category_ids = fields.Many2many('product.category')
以下规则仅允许访问该类别:
<record model="ir.rule" id="product_template_category_users">
<field name="name">product.template.category.users</field>
<field name="model_id" ref="product.model_product_template"/>
<field name="perm_read" eval="True"/>
<field name="perm_write" eval="True"/>
<field name="perm_unlink" eval="True"/>
<field name="perm_create" eval="True"/>
<field name="domain_force">[('categ_id', 'child_of', user.product_category_ids.ids)]</field>
</record>
规则运行正常,但我有这个问题:
此更改仅适用于&#34; A&#34;用户在更改当前公司或重新加载Odoo服务时。
我认为用户登录时必须与用户存储数据有关,可能是更新数据并允许规则从&#34; user&#34;中读取数据的某种方式。我需要对用户进行的更改实时应用于已连接的用户,而无需更改当前公司或重新加载Odoo服务。
感谢您的帮助。
答案 0 :(得分:0)
这很奇怪,它应该可以工作,但只能在更改当前公司或重新启动Odoo服务器之后。
您是否可以在加载了演示数据的空白数据库和/或新数据库上尝试修改?如果可能的话,最好在完全不同的服务器上进行测试,看看问题是否存在。
也许您也可以尝试像这样修改force_domain
:
['|', ('categ_id', 'in', user.product_category_ids.ids), ('categ_id', 'child_of', user.product_category_ids.ids)]
答案 1 :(得分:0)
如果有人遇到同样的问题,我每次在用户的产品类别字段中进行更改时都会使用此功能来解决它
self.env['ir.rule'].clear_cache()
该代码清除规则的缓存,以便规则应用新域。
答案 2 :(得分:0)
将self.env['ir.rule'].clear_cache()
添加到模型的create()
和write()
方法中。