2016-02-12 1 views
1

Я пытаюсь сохранить данные конфигурации в оду, мне нужно сохранить 3 ссылки на 'account.journal'. Модель создана в базе данных, вид отображаются в меню базовой конфигурации, данные хранить в базе данных, когда я нажимаю кнопку Применить, НО когда я перезагрузить меню данные не показаныУстановить и получить данные хранилища Odoo с 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_param и get_param) - это просто хранилище ключей, встроенное в Odoo, которое позволяет хранить произвольные строки. Я использовал его в качестве примера, но на самом деле вы можете хранить настройки везде, где захотите.

+1

благодарит Людвика! В вашем посте http://ludwiktrammer.github.io/odoo/custom-settings-odoo.html не упоминается conf.set_param и get_param И удача документации –

+1

'ir.config_parameter' (предоставление' set_param' и 'get_param') - это просто хранилище ключевых значений, встроенное в Odoo, позволяющее хранить произвольные строки. Я просто использовал его в качестве примера, вы можете хранить настройки везде, где захотите. –