跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 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. 关于openerp中create的不解

关于openerp中create的不解

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

    没看明白,你的从mysql读出来的resault是10条,执行create后,openerp有11条(多了id=0的)?

    【上海先安科技】(joshua AT openerp.cn),欢迎关注公众号:openerp_cn

    1 条回复 最后回复
    0
    • L 离线
      L 离线
      l315276651
      写于 最后由 编辑
      #4

      [quote author=Joshua link=topic=6716.msg15996#msg15996 date=1369818824]
      没看明白,你的从mysql读出来的resault是10条,执行create后,openerp有11条(多了id=0的)?
      [/quote]
      是的 很奇怪 不知道为什么会这样

      1 条回复 最后回复
      0
      • L 离线
        L 离线
        liwei78
        写于 最后由 编辑
        #5

        我觉得你的意思是,要保持导入之前的记录和OE里的记录,ID一致,是么?

        1 条回复 最后回复
        0
        • mrshellyM 离线
          mrshellyM 离线
          mrshelly
          写于 最后由 编辑
          #6

          你的循环没有用对....

          1 条回复 最后回复
          0
          • digitalsatoriD 离线
            digitalsatoriD 离线
            digitalsatori 管理员
            写于 最后由 编辑
            #7

            多出来的记录值是什么?是重复值还是空值。为什么要用super? 类名也用的奇怪

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

            1 条回复 最后回复
            0
            • L 离线
              L 离线
              l315276651
              写于 最后由 编辑
              #8

              [quote author=digitalsatori link=topic=6716.msg16003#msg16003 date=1369839636]
              多出来的记录值是什么?是重复值还是空值。为什么要用super? 类名也用的奇怪
              [/quote]
              多出来的记录是 id:0 name 空, 我读到的数据是 id:1,name:xxxx 这样的数据,id从1开始到9
              用super 是因为在点击按钮的时候 会自动执行create方法一次,想重写
              类名奇怪? 自己测试用的 不知道openerp对名称有什么特别的要求?

              1 条回复 最后回复
              0
              • L 离线
                L 离线
                l315276651
                写于 最后由 编辑
                #9

                [quote author=Li.Wei link=topic=6716.msg15999#msg15999 date=1369828652]
                我觉得你的意思是,要保持导入之前的记录和OE里的记录,ID一致,是么?
                [/quote]
                是的 我读出来的数据是 1到9 但写入后 却多了一个id=0 name=空的记录

                1 条回复 最后回复
                0
                • L 离线
                  L 离线
                  l315276651
                  写于 最后由 编辑
                  #10

                  [quote author=mrshelly link=topic=6716.msg16000#msg16000 date=1369834010]
                  你的循环没有用对....
                  [/quote]
                  没用对?但我的数据已经全部写入oe了啊

                  1 条回复 最后回复
                  0
                  • mrshellyM 离线
                    mrshellyM 离线
                    mrshelly
                    写于 最后由 编辑
                    #11

                    [quote author=l315276651 link=topic=6716.msg16007#msg16007 date=1369880356]
                    [quote author=mrshelly link=topic=6716.msg16000#msg16000 date=1369834010]
                    你的循环没有用对....
                    [/quote]
                    没用对?但我的数据已经全部写入oe了啊
                    [/quote]

                    数据已写入, 也不表明你的循环就正确啊.

                    如果你的循环多运行了一次. 你想想后果是什么样子的?

                    五条记录, 你想象中 应该是循环五次, 每次插入一条记录,
                    但是,如果你的循环用错了. 你循环里的代码运行了六次. 那结果会如何呢? 当然, 这只是假设. 😄

                    1 条回复 最后回复
                    0
                    • L 离线
                      L 离线
                      l315276651
                      写于 最后由 编辑
                      #12

                      [quote author=mrshelly link=topic=6716.msg16016#msg16016 date=1369955570]
                      [quote author=l315276651 link=topic=6716.msg16007#msg16007 date=1369880356]
                      [quote author=mrshelly link=topic=6716.msg16000#msg16000 date=1369834010]
                      你的循环没有用对....
                      [/quote]
                      没用对?但我的数据已经全部写入oe了啊
                      [/quote]

                      数据已写入, 也不表明你的循环就正确啊.

                      如果你的循环多运行了一次. 你想想后果是什么样子的?

                      五条记录, 你想象中 应该是循环五次, 每次插入一条记录,
                      但是,如果你的循环用错了. 你循环里的代码运行了六次. 那结果会如何呢? 当然, 这只是假设. 😄
                      [/quote]
                      可以确认的是 循环没有问题 每写一次数据我都print 出来写入的数据。现在的问题点是 在我开始循环写入数据之前
                      OE就自动的帮我写入了一条数据,这条数据就是在tree页面 点击create后自动产生的,点击button后 oe会先写入这条
                      数据 然后才执行我的function ,我猜测 这是oe的一种机制。不知道有什么办法 可以屏蔽系统自动创建的数据

                      1 条回复 最后回复
                      0
                      • mrshellyM 离线
                        mrshellyM 离线
                        mrshelly
                        写于 最后由 编辑
                        #13

                        嗯. 问题就在这里.

                        你不应该到本身这个对象的 form view

                        而应该是一个 wizard (osv.osv_memory || osv.Model) 内存对象...

                        1 条回复 最后回复
                        0
                        • L 离线
                          L 离线
                          l315276651
                          写于 最后由 编辑
                          #14

                          [quote author=mrshelly link=topic=6716.msg16026#msg16026 date=1369966522]
                          嗯. 问题就在这里.

                          你不应该到本身这个对象的 form view

                          而应该是一个 wizard (osv.osv_memory || osv.Model) 内存对象...
                          [/quote]
                          有点不明白  不知道 源码中 有相应的demo吗?

                          1 条回复 最后回复
                          0
                          • JoshuaJ 离线
                            JoshuaJ 离线
                            Joshua 管理员
                            写于 最后由 编辑
                            #15

                            首先感谢@mrshelly大大的回复。
                            @l315276651 的问题主要出在当你打开一个表单视图的时候,点击任何按钮,服务器首先第一步是把你当前的表单视图保存(估计你的表单里面没有必填字段,所以会保存 名字:空 ,xx字段:空),id=0就这样出来了。如果你是打开一条原有的数据的表单视图再点击你的按钮,估计就不会再生成这条id=0。
                            解决办法:

                            1.用wizard(osv.osv_memory || osv.TransientModel) 估计mrshelly回复里面有个笔误。(具体代码可以看其他模块的wizard文件夹),openerp里面的动作(按钮,菜单)一般都要绑定一个model,而这里如果用了osv.TransientModel,首先他会弹出你定义的TransientModel的视图,点击按钮后也会保存一个TransientModel的记录,但是这个记录系统会隔一段时间自动清空。

                            2.你可以使用server action,action type 选择 python code(里面可以写你的自己的方法), 然后把server action可以绑定到菜单上,这个server action虽然也要绑定一个model,不过并不需要开启该model的任何表单。

                            【上海先安科技】(joshua AT openerp.cn),欢迎关注公众号:openerp_cn

                            1 条回复 最后回复
                            0
                            • L 离线
                              L 离线
                              l315276651
                              写于 最后由 编辑
                              #16

                              感谢mrshelly和Joshua 2位大大的回复
                              让我进一步的了解了OE
                              继续学习OE 支持OE ;D

                              1 条回复 最后回复
                              0

                              • 登录

                              • 没有帐号? 注册

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