首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在odoo的many2one字段中限制“创建和编辑”权限

在odoo的many2one字段中限制"创建和编辑"权限,可以通过以下步骤实现:

  1. 创建一个新的模型(Model),用于存储many2one字段的数据。
  2. 在该模型中定义一个字段(Field),用于关联到另一个模型。
  3. 在该模型中定义一个用户(User)字段,用于记录创建和编辑该记录的用户。
  4. 在该模型中定义一个计算字段(Computed Field),用于判断当前用户是否有权限编辑该记录。
  5. 在视图(View)中,将many2one字段替换为新创建的模型的字段,并设置相应的权限。

下面是一个示例代码:

代码语言:txt
复制
from odoo import models, fields, api

class MyModel(models.Model):
    _name = 'my.model'
    
    name = fields.Char(string='Name')
    related_model = fields.Many2one('other.model', string='Related Model')
    user = fields.Many2one('res.users', string='User', default=lambda self: self.env.user)
    can_edit = fields.Boolean(compute='_compute_can_edit', string='Can Edit')
    
    @api.depends('user')
    def _compute_can_edit(self):
        for record in self:
            record.can_edit = record.user == self.env.user or self.env.user.has_group('base.group_system')

在上述示例中,我们创建了一个名为"my.model"的新模型,其中包含了一个many2one字段"related_model",一个用户字段"user",以及一个计算字段"can_edit"。计算字段"_compute_can_edit"通过判断当前用户是否与记录的用户相同,或者当前用户是否属于系统管理员组来确定是否有权限编辑该记录。

接下来,在视图中使用新模型的字段替换many2one字段,并设置相应的权限。例如,在XML视图中:

代码语言:txt
复制
<record id="my_model_form_view" model="ir.ui.view">
    <field name="name">my.model.form.view</field>
    <field name="model">my.model</field>
    <field name="arch" type="xml">
        <form>
            <sheet>
                <group>
                    <field name="name"/>
                    <field name="related_model" options="{'no_create_edit': True}"/>
                    <field name="user" readonly="1"/>
                    <field name="can_edit" invisible="1"/>
                </group>
            </sheet>
        </form>
    </field>
</record>

在上述示例中,我们使用了"options"属性将"related_model"字段的"no_create_edit"选项设置为True,以禁止创建和编辑相关模型的记录。同时,我们将"user"字段设置为只读(readonly="1"),并将"can_edit"字段设置为不可见(invisible="1")。

这样,当用户在创建或编辑"my.model"记录时,只能选择现有的相关模型记录,并且无法创建或编辑相关模型的记录。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的沙龙

领券