【问题标题】:How to check if field 'contains' the value in Odoo如何检查字段是否“包含” Odoo 中的值
【发布时间】:2017-07-17 11:52:38
【问题描述】:

我正在尝试为作为给定类别的查看者的用户提供访问权限。

    <record id="rule_cost_centre_viewer" model="ir.rule">
        <field name="name">Access for the records for a cost_centre's viewer</field>
        <field name="model_id" ref="model_example_module"/>
        <field name="domain_force">[('user_id', 'in', category.viewers.ids)]</field>
        <field name="groups" eval="[(4,ref('group_example_module_user'))]"/>
    </record>

尝试不成功,我得到了:

ValueError: <type 'exceptions.NameError'>: "name 'category' is not defined" while u"[('user_id', 'in', category.viewers.ids)]"

为了清楚起见:

class Example(models.Model):
    _name = 'example.module'
    category = fields.Many2one('example.category', 'Category')

class Category(models.Model):
    _name = 'example.category'
    name = fields.Char('Category')
    viewers = fields.Many2many('res.users', 'example_category_rel', 'user_id', 'viewer_id', 'Viewers')

这里有什么问题?

也许有可能检查一下。

<field name="domain_force">[('category.viewers.ids', 'contains', user.id)]</field>

因为其他方式不起作用?..

【问题讨论】:

    标签: odoo odoo-10


    【解决方案1】:

    应该是:

    <field name="domain_force">[('category.viewers', '=', user.id)]</field>
    

    也许这个解决方案有点尴尬,但它确实有效。 here回答了类似的问题。

    并尽量遵守 Odoo 的字段命名指南:category_idviewer_ids 等等。

    【讨论】:

    • 那是肯定的。感谢您的帮助!
    • 关于命名字段,那些 category_id、viewer_ids 是不是适合 openerp
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 2018-07-24
    • 1970-01-01
    • 2011-10-02
    相关资源
    最近更新 更多