2017-07-17 4 views
3

特定のカテゴリの視聴者であるユーザーにアクセスを提供しようとしています。フィールドに「Odoo」の値が含まれているかどうかを確認する方法

<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> 

..チェックする可能性があります。..

答えて

3

それは次のようになります。

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

はたぶん、このソリューションは少しあります扱いにくいですが、うまくいきます。同様の質問がhereと答えられました。

そして、フィールドの命名については、Odooのガイドラインに従ってください:category_idviewer_idsなど。

+0

これは確かに厄介です。助けてくれてありがとう! – tidylobster

+0

名前付けフィールドについては、category_idではなく、viewer_idsはopenerp <= 7.0バージョンに適していましたか? – tidylobster

+0

[Odoo Guidelines](https://www.odoo.com/documentation/10.0/reference/guidelines.html#symbols-and-conventions)にあります。 – CZoellner

関連する問題