You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现用户创建默认草稿记录且无法查看草稿状态记录?

解决Odoo草稿记录权限配置问题

让我们一步步拆解你的需求,修正现有规则的问题,实现你想要的权限逻辑:

需求回顾

  1. 用户创建的shipping_cash记录默认处于**draft(草稿)**状态,但创建者自己无法查看这条草稿记录
  2. 仅指定组(比如shipping_group_manager)可以查看草稿状态的记录,其他用户看不到任何草稿

现有规则的问题

你当前配置的规则给shipping_group_manager组设置了[('state','!=','draft')],这会导致管理员组也看不到草稿记录,完全和你的需求相反。而且没有处理"创建者看不到自己草稿"的核心逻辑。

完整解决方案

1. 确保记录默认处于Draft状态

首先在shipping_cash模型的state字段定义中添加默认值,让新创建的记录自动设为草稿:

from odoo import models, fields

class ShippingCash(models.Model):
    _name = 'shipping.cash'
    _description = 'Shipping Cash'

    state = fields.Selection([
        ('draft', 'Draft'),
        ('confirmed', 'Confirmed'),
        # 其他状态选项根据你的业务需求添加
    ], string='Status', default='draft')
    # 其他字段定义...

2. 配置普通用户权限规则(看不到任何草稿)

创建一个规则,让所有普通用户(排除管理员组)只能查看非草稿状态的记录,这样创建者自己也看不到自己的草稿:

<record model="ir.rule" id="shipping_cash_user_rule">
    <field name="name">Shipping Cash - Regular User Access (No Drafts)</field>
    <field name="model_id" ref="model_shipping_cash"/>
    <!-- 应用到所有普通用户组 -->
    <field name="groups" eval="[(4, ref('base.group_user'))]"/>
    <!-- 排除管理员组,避免规则冲突 -->
    <field name="exclude_from_groups" eval="[(4, ref('custom_shipping.shipping_group_manager'))]"/>
    <!-- 仅显示非草稿记录 -->
    <field name="domain_force">[('state', '!=', 'draft')]</field>
    <field name="perm_read" eval="True"/>
    <field name="perm_write" eval="True"/>
    <field name="perm_create" eval="True"/>
    <field name="perm_unlink" eval="True"/>
</record>

3. 配置管理员组权限规则(可查看所有记录)

给shipping_group_manager组设置全量访问权限,允许他们查看包括草稿在内的所有记录:

<record model="ir.rule" id="shipping_cash_manager_rule">
    <field name="name">Shipping Cash - Manager Full Access</field>
    <field name="model_id" ref="model_shipping_cash"/>
    <!-- 绑定到管理员组 -->
    <field name="groups" eval="[(4, ref('custom_shipping.shipping_group_manager'))]"/>
    <!-- 允许查看所有记录 -->
    <field name="domain_force">[(1, '=', 1)]</field>
    <field name="perm_read" eval="True"/>
    <field name="perm_write" eval="True"/>
    <field name="perm_create" eval="True"/>
    <field name="perm_unlink" eval="True"/>
    <!-- 设置更高优先级,确保规则优先生效 -->
    <field name="sequence" eval="10"/>
</record>

测试验证

  1. 用普通用户账号创建一条shipping_cash记录,刷新后你会发现这条草稿记录不会出现在列表中
  2. 切换到shipping_group_manager组的用户账号,可以看到所有草稿和非草稿记录
  3. 确认普通用户只能看到已确认(或其他非草稿状态)的记录

内容的提问来源于stack exchange,提问作者Salem Hassan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:19:07