Odoo 中文社区

    • Register
    • Login
    • Search
    • Categories
    • Tags
    • Popular
    • Users
    • Groups

    Odoo中文社区可以通过以下两个域名访问:shine-it.net , odoo.net.cn

    由于系统升迁的原因,本论坛部分较早期的内容存在格式和链接损坏失效的问题,并非本论坛系统本身的缺陷,望谅解

    本社区没有维护任何QQ群讨论组,任何与本社区同名的QQ群讨论组的言论与本社区无关!

    开发人员可以登录gitter讨论组: http://gitter.im/odoo-china/Talk, 需要github账号

    如果您登录系统碰到问题,请在微信公众号留言:

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

    Odoo 新手求助
    2
    8
    3557
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • K
      kk071700 last edited by

      小弟希望在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 Reply Last reply Reply Quote 0
      • mrshelly
        mrshelly last edited by

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

        返回的是OE特定的内容.

        如 integer 返回的是 一个integer

        char 返回的是一个 char

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

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

        1 Reply Last reply Reply Quote 0
        • K
          kk071700 last edited by

          請教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 Reply Last reply Reply Quote 0
          • mrshelly
            mrshelly last edited by

            你確認你的代碼同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 Reply Last reply Reply Quote 0
            • K
              kk071700 last edited by

              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 Reply Last reply Reply Quote 0
              • mrshelly
                mrshelly last edited by

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

                1 Reply Last reply Reply Quote 0
                • K
                  kk071700 last edited by

                  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 Reply Last reply Reply Quote 0
                  • First post
                    Last post