跳转至内容
  • 版块
  • 标签
  • 热门
  • 用户
  • 群组
皮肤
  • 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. 請教關於新式osv.osv_memory wizard內,_default值希望動態由資料庫取出該如何施作

請教關於新式osv.osv_memory wizard內,_default值希望動態由資料庫取出該如何施作

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

    小弟希望在wizard的_default值希望動態由資料庫取出
    請問該讀取資料庫的程式碼該在哪邊加入
    如果說是要define一個 function又要如何在_defaults內讀取?
    感恩大大不吝指點

    Code:

    class wizard_create_prescription(osv.osv_memory):
        _name="create.prescription"
        _description = "Create Prescription"
        _columns = {
        'x_optom_id': fields.many2one('x_optom', 'Optometrist',domain=[('x_optom_code','!=','EZ')]),
        }
        _defaults = {
        'x_optom_id': '',
        }

        #Read DB
        x_optom=x_optom
        D=str(time.strftime("%Y-%m-%d", gmtime() ))
        cr.execute('select x_optom from x_dailywork_record where x_date='+str(D))
        resP = cr.fetchall()
        for rowP in resP:
            x_optom=str(rowP[0])

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

      _defaults 中 指定 function , 在 function 里,  你想怎么取就怎么取, 原系统 addons 里, 有相关的代码, 找一段阅读一下就明白了.

      返回的是OE特定的内容.

      如 integer 返回的是 一个integer

      char 返回的是一个 char

      同样, many2one 肯定就返回的是一个 many2one 了...

      看看别的代码中. many2one 的 default 如何写,你就知道如何写了...

      1 条回复 最后回复
      0
      • K 离线
        K 离线
        kk071700
        写于 最后由 编辑
        #3

        請教mrshelly大
        小弟參照addons\base\res\res_compy.py當中 class res_compy(osv.osv)的_default呼叫function的寫法
        以最單純的char測試,可是仍然出錯,似乎是_defaults的呼叫Function錯誤 可是在res_compy.py中就是如此呼叫

        請教該如何修正 感恩

        class wizard_create_prescription(osv.osv_memory):

            _name="create.prescription"
            _description = "Create Prescription"

            _columns = {
            'x_optom_id': fields.char('x_optom_id', size=15),
            }

            _defaults = {
            'x_optom_id': _get_optom,
            }

            def _get_optom(self,cr,uid,ids):
                x_optom_name='Fiona'
                return x_optom_name



        [quote author=mrshelly link=topic=4170.msg11189#msg11189 date=1338180172]
        _defaults 中 指定 function , 在 function 里,  你想怎么取就怎么取, 原系统 addons 里, 有相关的代码, 找一段阅读一下就明白了.

        返回的是OE特定的内容.

        如 integer 返回的是 一个integer

        char 返回的是一个 char

        同样, many2one 肯定就返回的是一个 many2one 了...

        看看别的代码中. many2one 的 default 如何写,你就知道如何写了...
        [/quote]

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

          你確認你的代碼同res_company.py 的一樣?
          [code=python]
          ...
          class wizard_create_prescription(osv.osv_memory):

              _name="create.prescription"
              _description = "Create Prescription"

              _columns = {
              'x_optom_id': fields.char('x_optom_id', size=15),
              }

              def _get_optom(self,cr,uid,ids):
                  x_optom_name='Fiona'
                  return x_optom_name

              _defaults = {
              'x_optom_id': _get_optom,
              }

          ...
          [/code]

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

            mrshelly大 您好
            小弟仿造res_company.py中class res_compy(osv.osv)的
            Line 84:  'rml_header' : fields.text('RML Header', required=True),
            Line 225: def _get_header(self,cr,uid,ids):
            Line 269: 'rml_header':_get_header,

            差異應該是一個為fields.text 另一個為fields.char
            可是就算我改成fields.text也會出錯


            [quote author=mrshelly link=topic=4170.msg11193#msg11193 date=1338191374]
            你確認你的代碼同res_company.py 的一樣?
            [code=python]
            ...
            class wizard_create_prescription(osv.osv_memory):

                _name="create.prescription"
                _description = "Create Prescription"

                _columns = {
                'x_optom_id': fields.char('x_optom_id', size=15),
                }

                def _get_optom(self,cr,uid,ids):
                    x_optom_name='Fiona'
                    return x_optom_name

                _defaults = {
                'x_optom_id': _get_optom,
                }

            ...
            [/code]
            [/quote]

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

              请仔细看我的代码与你的代码.
              前前后后, 你都没有说明你的"出"的什么"错"!...

              1 条回复 最后回复
              0
              • K 离线
                K 离线
                kk071700
                写于 最后由 编辑
                #7

                mrshelly大
                經過您的提點,小弟再仔細比較-原來是function必須放置於_default之前
                (因為以前寫Java Class就沒有這種順序性的要求,所以一時沒想到會有影響)
                真是不好意思勞煩您再三提醒  感恩

                另外一個提問--Save,Save & Edit,Cancel 等三個按鈕不顯現的問題
                是否是在XML中訂義
                <act_windows
                view_type : "form"
                />
                小弟本來就有寫 但是無作用

                [quote author=mrshelly link=topic=4170.msg11196#msg11196 date=1338194528]
                请仔细看我的代码与你的代码.
                前前后后, 你都没有说明你的"出"的什么"错"!...
                [/quote]

                1 条回复 最后回复
                0

                • 登录

                • 没有帐号? 注册

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