2015-04-04 64 views
1

我在列表視圖中使用Odoo嚮導會出現一些問題,該列表視圖會從選定(已選中)列表項中取值以更新另一條記錄。例如,我向res_partner添加了一個名爲related_pa​​rtner_id的列。基本上,它用於分類主帳戶(合作伙伴)。添加新客戶時,我已經設置了一個可以分配主賬戶的下拉菜單。數據庫將res_partner_id更新爲來自res_partner的子帳戶的ID。Odoo 8(Openerp):使用列表視圖中的嚮導設置值

這是我使用的視圖。

<?xml version="1.0" encoding="utf-8"?> 
<openerp> 
    <data> 
     <!--Wizard view to assign new master account--> 
     <record model="ir.ui.view" id="view_master_wizard_form"> 
      <field name="name">master.wizard.form</field> 
      <field name="model">master.wizard</field> 
      <field name="arch" type="xml"> 
       <form string="Assign New Parent"> 
        <separator colspan="4" string="Update Parent"/> 
        <newline/> 
        <field name="related_partner_id"/> 
        <field name="parent_id" invisible="1"/> 
        <group col="4" colspan="4"> 
         <button icon="gtk-cancel" special="cancel" string="Cancel"/> 
         <button icon="gtk-ok" name="change_master" string="Update" type="object"/> 
        </group> 
       </form> 
     </field> 
    </record> 
    <!--Add option to More dropdown in customer list viewt--> 
    <act_window id="launch_res_partner" name="Assign New Master" 
       src_model="res.partner" 
       res_model="master.wizard" 
       view_mode="form" 
       view_type="form" 
       target="new" 
       key2="client_action_multi"/> 
    <!--Action to change selected customers to the new master account--> 
    <record id="action_change_master" model="ir.actions.act_window"> 
     <field name="name">Assign New Master Account</field> 
     <field name="type">ir.actions.act_window</field> 
     <field name="src_model">res.partner</field> 
     <field name="res_model">master.wizard</field> 
     <field name="view_type">form</field> 
     <field name="view_mode">form</field> 
     <field name="target">new</field> 
    </record> 
</data> 

我跟着/基於它從Odoo嚮導引導here。我可以看到它在數據庫中寫入條目master_wizard表(儘管只有一個我檢查了多少),但它不會更新res_partner表。

回答

1

這是使用上述XML的模型類。只需要遍歷ID並將值從自我值設置到嚮導res.partner表。這是所有新的API。它可能需要修改一下,但現在可以正常工作。我必須將parent_id設置爲需要更改。

from openerp import models, fields, api 


class master_wizard(models.TransientModel): 
    _name = 'master.wizard' 

    related_partner_id = fields.Many2one('res.partner', 'Master Account') 
    parent_id = fields.Many2one('res.partner') 
    related_partner_ids = fields.One2many('res.partner', 'related_partner_id') 

    @api.multi 
    def change_master(self): 
     related_partner_ids = self.env['res.partner'].browse(self._context.get('active_ids')) 
     for partner in related_partner_ids: 
      partner.related_partner_id = self.related_partner_id 
      partner.parent_id = self.related_partner_id 
     return {}