2016-02-12 79 views
1

我試圖存儲在odoo配置數據存儲數據Odoo,我需要存儲3提及「account.journal」。 在數據庫中創建的模型,該視圖在配置上基菜單所示,數據是存儲在數據庫中,當我推應用按鈕,但是當我重新加載菜單中的數據未示出set和get與TransientModel

該代碼使用:

from openerp import fields, models, osv, api, _ 

class Configuration(models.TransientModel): 
    _inherit = 'res.config.settings' 
    _name = 'transporte_carta_de_porte.config.settings' 

    ft_mercaderia = fields.Many2one(
     'account.journal',string='Debito ft mercaderia', 
     help="Diario de ajuste al transportista por faltante de mercaderia") 
    ade_transportista = fields.Many2one(
     'account.journal',string='Debito por adelanto transportista', 
     help="Diario de debito al transportista por faltante de adelanto") 
    ade_proveedor = fields.Many2one(
     'account.journal',string='Debito por adelanto proveedor', 
     help="Diario de debito por adelanto en la cuenta del proveedor de combustible",) 

佈局

<record id="view_tcp_config_settings" model="ir.ui.view"> 
      <field name="name">TCP settings</field> 
      <field name="model">transporte_carta_de_porte.config.settings</field> 
      <field name="arch" type="xml"> 
       <form string="TCP settings" 
         class="oe_form_configuration"> 
        <sheet> 
         <div> 
          <button string="Apply" type="object" name="execute" class="oe_highlight" /> 
          or 
          <button string="Cancel" type="object" name="cancel" class="oe_link" /> 
         </div> 
         <group string="Journals Settings"> 
          <field name="ft_mercaderia" /> 
          <field name="ade_transportista" /> 
          <field name="ade_proveedor" /> 
         </group> 
        </sheet> 
       </form> 
      </field> 
     </record> 

     <record id="action_tcp_configuration" model="ir.actions.act_window"> 
      <field name="name">TCP Configuration</field> 
      <field name="res_model">transporte_carta_de_porte.config.settings</field> 
      <field name="priority" eval="50" /> 
      <field name="view_mode">form</field> 
      <field name="target">inline</field> 
     </record> 

     <menuitem id="menu_tcp_config" name="TCP Settings" parent="base.menu_config" action="action_tcp_configuration" /> 

每次我選擇的字段的值,推動應用新記錄insted的修改創建的第一個創建的,沒有人是在視圖負載負載。 感謝您的閱讀!

回答

6

TransientModel s的設計是暫時的,只要你能得到的價值和任何你想與他們無關。他們定期從數據庫中刪除。

您需要實現自己的方式來保存這些設置。您需要實現(至少)兩種方法:

  • set_foo(其中foo是一個任意字符串)用於保存值。
  • get_default_foo(其中foo再次是任意字符串),用於獲取已保存的值(在配置用戶界面中顯示它們)

一個簡單的例子:

class AgeLimitSetting(models.TransientModel): 
    _inherit = 'res.config.settings' 

    min_age = fields.Integer(
     string=u"Age limit", 
    ) 

    @api.model 
    def get_default_age_values(self, fields): 
     conf = self.env['ir.config_parameter'] 
     return { 
      'min_age': int(conf.get_param('age_verification.min_age')), 
     } 

    @api.one 
    def set_age_values(self): 
     conf = self.env['ir.config_parameter'] 
     conf.set_param('age_verification.min_age', str(self.min_age)) 

ir.config_parameter(提供set_paramget_param方法)是剛剛建成Odoo,讓您存儲任意字符串簡單的key-value存儲。我以此爲例,但實際上您可以將設置存儲在任何地方。

+1

感謝盧德維克登!在你的文章http://ludwiktrammer.github.io/odoo/custom-settings-odoo.html中沒有提到conf.set_param和get_param And Odoo運氣好的文檔 –

+1

'ir.config_parameter'(提供'set_param'和'get_param'方法)只是一個簡單的內置於Odoo中的鍵值存儲,可讓您存儲任意字符串。我只是用它作爲例子,你可以將設置存儲在任何你喜歡的地方。 –