跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 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. [已解决]如何修改Odoo默认保存按钮的事件

[已解决]如何修改Odoo默认保存按钮的事件

已定时 已固定 已锁定 已移动 Odoo 新手求助
26 帖子 3 发布者 12.0k 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • 水 离线
    水 离线
    水在时间之下
    在 回复了 digitalsatori 最后由 编辑
    #4

    @digitalsatori 计算字段我会点,在用,关键是我找不到他说的那个write()方法,是模型自带的默认方法吗?

    1 条回复 最后回复
    0
    • 水 离线
      水 离线
      水在时间之下
      在 回复了 hui 最后由 编辑
      #5

      @hui 先谢谢你,让,后我想问下,write()方法是默认方法吗?重写的话需要继承吗?怎么去写?
      谢谢大佬帮忙

      H 1 条回复 最后回复
      0
      • H 离线
        H 离线
        hui
        在 回复了 水在时间之下 最后由 编辑
        #6

        @水在时间之下
        我没太懂你的意思好像。你可以参考管理员的意见,他才是大佬,哈哈。
        不过可以给你说下write()方法。

        write()方法是系统的创建记录的时候的那个save按钮对应的方法。
        你可以参考https://github.com/odoo/odoo/blob/11.0/odoo/models.py 这个里面的```write()``的方法,这个就是通常保存按钮调用的方法。

        重写的话不需要继承,只要在你的模型里面定义一个write()方法就相当于重写了,在这个里面加入自己的业务逻辑就行了。

        水 1 条回复 最后回复
        0
        • 水 离线
          水 离线
          水在时间之下
          在 回复了 hui 最后由 编辑
          #7

          @hui 嗯嗯,好的,谢谢了。可能是我没描述清楚吧,我跟你说下:计算字段a需要依赖一个本模型中的字段b,本模型的字段b变化后会触发计算字段的方法,改变计算字段a的值,这是正常的计算字段的使用。我现在是计算字段要依赖非本模型的字段c,即a和c不在一个模型里面,但是a的值取决于c的值。
          我暂时的解决方法是添加一个按钮,通过点击按钮来出发计算的方法(按钮事件里面是可以拿到c的值的),以达到修改a值的目的,这样是可以实现的,然后我想吧按钮省掉,改写默认的按钮的事件来帮我完成计算修改a值。

          H 1 条回复 最后回复
          0
          • H 离线
            H 离线
            hui
            在 回复了 水在时间之下 最后由 hui 编辑
            #8

            @水在时间之下
            不在一个模型里面,计算也是可以依赖的,a字段所在的模型肯定有跟c字段所在的模型关联的吧,计算方法的依赖可以写成这种形式的@api.depends('C.c')。
            大C你可以当成是a模型中跟c字段所在模型关联的字段。

            水 2 条回复 最后回复
            0
            • 水 离线
              水 离线
              水在时间之下
              在 回复了 hui 最后由 编辑
              #9

              @hui 这样可以吗?我明天上班的时候试下,谢谢

              1 条回复 最后回复
              0
              • 水 离线
                水 离线
                水在时间之下
                在 回复了 hui 最后由 编辑
                #10

                @hui 好像不行(C.c),识别不了C,报错,甚至直接打不开

                H 1 条回复 最后回复
                0
                • H 离线
                  H 离线
                  hui
                  在 回复了 水在时间之下 最后由 编辑
                  #11

                  @水在时间之下
                  我说的是这个意思,我这里的字段product_id对应的模型是product.template,下面计算的方法就是依赖模型product.template中的一个字段,这样写的,代码如下,看符合你的要求吗?

                  0_1522305647442_2018-03-29 14-40-35屏幕截图.png

                  水 2 条回复 最后回复
                  0
                  • 水 离线
                    水 离线
                    水在时间之下
                    在 回复了 hui 最后由 编辑
                    #12

                    @hui 你这里product_id.robot_protection_type_color_id这个字段不是product_template模型中的字段,是在本模型中有这个字段的,我的要求是product_id是一个计算字段,然后它的值依赖于product_template模型中的某个字段。
                    比如product_template模型中有个is_qualified字段,然后本模型中的product_id字段的值与is_qualified字段有关,那能写成@api.depends('product_template.is_qualified')吗? 本模型与product_template 模型的关系是本模型中有product_template.id

                    H 1 条回复 最后回复
                    0
                    • 水 离线
                      水 离线
                      水在时间之下
                      在 回复了 hui 最后由 编辑
                      #13

                      @hui 我还是给你贴下代码吧。0_1522317604536_8d2d7cf5-2b78-48c2-9549-478e51f5d769-image.png

                      H 1 条回复 最后回复
                      0
                      • H 离线
                        H 离线
                        hui
                        在 回复了 水在时间之下 最后由 hui 编辑
                        #14

                        @水在时间之下 可以啊,我这个是这个凑巧,这两个模型中都有这个字段。
                        如果是这个模型中的robot_protection_type_color_id我不是就不用加前缀了吗

                        水 1 条回复 最后回复
                        0
                        • H 离线
                          H 离线
                          hui
                          在 回复了 水在时间之下 最后由 编辑
                          #15

                          @水在时间之下 你没有贴需要依赖的哪个模型啊

                          水 1 条回复 最后回复
                          0
                          • 水 离线
                            水 离线
                            水在时间之下
                            在 回复了 hui 最后由 编辑
                            #16

                            @hui 我的depends里面还是空的,不知道填什么字段。

                            1 条回复 最后回复
                            0
                            • 水 离线
                              水 离线
                              水在时间之下
                              在 回复了 hui 最后由 编辑
                              #17

                              @hui
                              0_1522317999311_f3edf5a7-4534-4886-bcc7-9463a91a0f7e-image.png
                              这个模型里面的is_qualified决定上面的模型中的is_qualified字段值,而且这个模型跟上面模型是多对一的

                              H 1 条回复 最后回复
                              0
                              • H 离线
                                H 离线
                                hui
                                在 回复了 水在时间之下 最后由 编辑
                                #18

                                @水在时间之下

                                我觉得下面这个模型mxqc.sx.checklist.detail中的计算方法_is_qualified的depends可以写成@api.depends('sx_checklist_id.is_qualified')。你试试

                                水 2 条回复 最后回复
                                0
                                • 水 离线
                                  水 离线
                                  水在时间之下
                                  在 回复了 hui 最后由 编辑
                                  #19

                                  @hui
                                  0_1522376490809_18a17da4-510a-4def-adb3-345a261ea26c-image.png
                                  我的这个模型里面的is_qualified字段值决定上面的模型中的is_qualified字段值,现在这个模型中的值是自动计算的,且与上面模型是多对一的

                                  H 2 条回复 最后回复
                                  0
                                  • H 离线
                                    H 离线
                                    hui
                                    在 回复了 水在时间之下 最后由 hui 编辑
                                    #20

                                    @水在时间之下
                                    那你的意思是这个多的is_qualified决定一的is_qualified?

                                    多的is_qualified会不会存在多个值?

                                    1 条回复 最后回复
                                    0
                                    • H 离线
                                      H 离线
                                      hui
                                      在 回复了 水在时间之下 最后由 编辑
                                      #21

                                      @水在时间之下

                                      或者是不是可以在你这个多对一的多的模型中增加一个字段a,作用就是只是获取你计算的多条数据的is_qualified的值,然后在多对一的一的模型中只依赖这个计算好的字段a就行。不知道理解的对不对。

                                      1 条回复 最后回复
                                      0
                                      • 水 离线
                                        水 离线
                                        水在时间之下
                                        在 回复了 hui 最后由 编辑
                                        #22

                                        @hui 给你看看我的类图,你应该就能了解了
                                        0_1522376634563_95088be5-b2a5-4ede-bfb9-4619d9604ce8-image.png

                                        digitalsatoriD 1 条回复 最后回复
                                        0
                                        • digitalsatoriD 离线
                                          digitalsatoriD 离线
                                          digitalsatori 管理员
                                          在 回复了 水在时间之下 最后由 digitalsatori 编辑
                                          #23

                                          @水在时间之下

                                          下面的写法供你参考,希望有帮助。

                                          @api.depends('sx_checklist_detail_ids.is_qualified')
                                          def _is_qualified(self):
                                              for checklist in self:
                                                 if checklist.sx_checklist_detail_ids.filtered(lambda d: d.is_qualified == 'NO'):
                                                     checklist.is_qualified = 'NO'
                                                 else:
                                                     checklist.is_qualified = 'YES'

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

                                          H 水 2 条回复 最后回复
                                          0

                                          • 登录

                                          • 没有帐号? 注册

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