• 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 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 中文社区

请问odoo depends 的触发

已定时 已固定 已锁定 已移动 Odoo 新手求助
9 帖子 2 发布者 1475 浏览
    • 从旧到新
    • 从新到旧
    • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • 曹 离线
    曹 离线
    曹伯纯
    写于 最后由 编辑
    #1

    问题是这样的 ,现有一张A表,B表和C表。B表和C表都有A表的id,B表和C表之间唯一的关联就是A_id。 我现在要对C表中的一些数据进行计算,并将之存储与B表中,通过A_id进行search。 请问现在depends该如何处理呢,怎样做到C表中用于计算的字段一旦发生变化,就会执行计算函数,并且更新到B表中。

    H 1 条回复 最后回复
    0
  • H 离线
    H 离线
    hui
    在 中回复了曹伯纯 最后由 hui 编辑
    #2

    @曹伯纯
    我这样想,你看可以不。
    1、比如模型C中需要计算的字段是c,依据变化的字段是c1,c2,这个按平常的@api.depends写就行。
    2、第一步以后字段c的值发生改变了,同时你要更新模型B的b字段的值,查询出符合你修改条件的B,然后调用B的write的方法。

    至于你说的通过A_id进行search,这个没懂,是这些变化的字段里面有跟A_id 相关的吗?没有这些计算,也可以通过A_id进行search的呀。

    1 条回复 最后回复
    0
  • 曹 离线
    曹 离线
    曹伯纯
    写于 最后由 曹伯纯 编辑
    #3

    @api.multi
    @api.depends('c1','c2')
    def _compute_qty(self):
    for rec in self:
    b = self.env['B'].search([('A_id','=',rec.A_id.id)])
    qty = rec.c1 + rec.c2
    b.b = qty

    compute = "_compute_qty" 应该放在哪里呢 @hui

    H 1 条回复 最后回复
    0
  • H 离线
    H 离线
    hui
    在 中回复了曹伯纯 最后由 hui 编辑
    #4

    @曹伯纯
    compute = "_compute_qty" 应该放在qty这个字段里面,例如:

    qty = fields.Char('Protection Type-Color',                                              compute='_compute_qty')
       
    

    再者b.b=qty这个有问题不?

    1 条回复 最后回复
    0
  • 曹 离线
    曹 离线
    曹伯纯
    写于 最后由 编辑
    #5

    这里要新建一个qty字段用来存储计算后的字段吗,那B表中write方法还是要等B表操作才会更新计算值啊@hui

    H 1 条回复 最后回复
    0
  • 曹 离线
    曹 离线
    曹伯纯
    写于 最后由 曹伯纯 编辑
    #6

    这里是不是应该调用C中的write方法 @hui

    H 1 条回复 最后回复
    0
  • H 离线
    H 离线
    hui
    在 中回复了曹伯纯 最后由 hui 编辑
    #7

    @曹伯纯
    1、你不是要计算一些数据,不是根据已有的字段c1,c2计算出字段c吗,你看你具体的要求,需不需要再重写一个字段?
    2、要write的话,就是

    @api.multi
    @api.depends('c1','c2')
    def _compute_qty(self):
        for rec in self:
            b = self.env['B'].search([('A_id','=',rec.A_id.id)])
            qty = rec.c1 + rec.c2
            b.write({'b': qty})
    
    1 条回复 最后回复
    0
  • 曹 离线
    曹 离线
    曹伯纯
    写于 最后由 编辑
    #8

    有点明白了 还是代码直观 我去试试看 @hui 谢谢

    1 条回复 最后回复
    0
  • H 离线
    H 离线
    hui
    在 中回复了曹伯纯 最后由 编辑
    #9

    @曹伯纯
    是更新哪个表,就是哪个表write啊,你不是要更新b表的数据吗?所以要b write

    1 条回复 最后回复
    0

  • 登录

  • 没有帐号? 注册

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

  • 没有帐号? 注册

  • 登录或注册以进行搜索。