跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(Flatly)
  • 不使用皮肤
折叠

Odoo 中文社区

  1. 主页
  2. 版块
  3. Odoo 新手求助
  4. odoo14, 搜索视图默认添加当前用户的部门查询条件

odoo14, 搜索视图默认添加当前用户的部门查询条件

已定时 已固定 已锁定 已移动 已解决 Odoo 新手求助
8 帖子 3 发布者 1.4k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • M 离线
    M 离线
    mzj
    写于 最后由 编辑
    #1

    当我点开一个菜单打开一个tree视图时, 我如何能够将当前的登录用户的部门添加到默认条件上呢, 我知道上下文当中可以通过uid添加当前登录用户的筛选, 但是登录用户的部门改如何做呢?24bcc695-f933-4061-95cf-2f4dd6025e10-image.png

    digitalsatoriD 1 条回复 最后回复
    0
    • digitalsatoriD 离线
      digitalsatoriD 离线
      digitalsatori 管理员
      在 回复了 mzj 最后由 digitalsatori 编辑
      #2

      @mzj
      我估计你已经知道我们可以在act_window的context上设置默认的过滤条件的方法:

      <record id="xml_id" model="ir.actions.act_window">
           <field name="context">{'search_default_filter_name': 1}</field>
      </record>
      

      根据你需要按当前用户所属部门来过滤记录的要求,我们可以首先在对象的Search View中定义对应的搜索条件 (前提是你已安装了HR模块,或者已经继承res.users对象并在其上添加了department_id):

       <filter string="PR from my department" domain="[('department_id.member_ids.user_id', 'in', [uid])]" name="my_department_filter"/>
      

      注意我们给这个过滤条件设定的名字my_department_filter, 然后把这个过滤条件用到之前提到的window action的context里就是:

      <record id="xml_id" model="ir.actions.act_window">
           <field name="context">{'search_default_my_department_filter': 1}</field>
      </record>
      

      这是默认过滤条件的基本配置方法。使用过滤条件的好处是比较灵活,用户也可以选择关闭此过滤条件。如果需要获得强制性的过滤结果(即让用户无法关闭),在Odoo中可以有多个手段,比如action上的domain,设置“记录规则”或者覆写“search”方法等等

      【上海先安科技】(tony AT openerp.cn)

      M wjfonhandW 2 条回复 最后回复
      0
      • M 离线
        M 离线
        mzj
        在 回复了 digitalsatori 最后由 编辑
        #3

        @digitalsatori 谢谢您提供的解决办法, 可是我在实现时遇到这样一个问题, hr模块里面有继承res.users 模型 也有关联department, 于是我就用hr模块里的department_id 去写 过滤条件:

        <filter string="我的部门" domain="[('department_id', '=',user.department_id)]" name="my_department_filter"/>
        

        出现这样的错误:

        Invalid composed field user.department_id in domain of <filter name="my_department">  ([('requested_by_department','=', user.department_id)])
        

        hr 模块里面有关字段是这样的

        employee_ids = fields.One2many('hr.employee', 'user_id', string='Related employee')
        employee_id = fields.Many2one('hr.employee', string="Company employee",
                compute='_compute_company_employee', search='_search_company_employee', store=False)
        department_id = fields.Many2one(related='employee_id.department_id', readonly=False, related_sudo=False)
        

        我想问一下, 搜索视图里面 user 不可以使用没有在数据库当中保存的属性(字段)吗

        digitalsatoriD 1 条回复 最后回复
        0
        • digitalsatoriD 离线
          digitalsatoriD 离线
          digitalsatori 管理员
          在 回复了 mzj 最后由 编辑
          #4

          @mzj
          之前的domain设计有问题,我在原来的帖子里改了一下,你再试试。

          【上海先安科技】(tony AT openerp.cn)

          M 1 条回复 最后回复
          0
          • M 离线
            M 离线
            mzj
            在 回复了 digitalsatori 最后由 编辑
            #5

            @digitalsatori 已经试过了, 这种方式是可行的! 非常感谢您的帮助!!!

            digitalsatoriD 1 条回复 最后回复
            0
            • digitalsatoriD 离线
              digitalsatoriD 离线
              digitalsatori 管理员
              在 回复了 mzj 最后由 编辑
              #6

              @mzj 不客气

              【上海先安科技】(tony AT openerp.cn)

              1 条回复 最后回复
              0
              • wjfonhandW 离线
                wjfonhandW 离线
                wjfonhand
                在 回复了 digitalsatori 最后由 编辑
                #7

                one2many后面还可以直接引用many2one字段,竟然还能执行出结果,真是神奇的魔法。到底表达式左边返回的是列表还是单值呢?

                如果左边是单值

                in是双向的,uid是不是不用转为列表?

                GoodERP -- Odoo China fork

                digitalsatoriD 1 条回复 最后回复
                0
                • digitalsatoriD 离线
                  digitalsatoriD 离线
                  digitalsatori 管理员
                  在 回复了 wjfonhand 最后由 编辑
                  #8

                  @wjfonhand 你说的对: “in 是双向的”。 左边返回的是列表,右边的uid不转为列表也可以的。

                  【上海先安科技】(tony AT openerp.cn)

                  1 条回复 最后回复
                  0

                  • 登录

                  • 没有帐号? 注册

                  • 登录或注册以进行搜索。
                  • 第一个帖子
                    最后一个帖子
                  0
                  • 版块
                  • 标签
                  • 热门
                  • 用户
                  • 群组