2017-04-01 153 views
0

選擇選項如何填充其它變更字段中選擇選項。例如:填充上改變odoo 9

用於選擇選項默認值爲存儲在數據庫tbl_car(奧迪,歐寶,奔馳,VW,BMW)。在其他表tbl_car_user中,我存儲car_name和user_name('Peter','Audi')。現在我想要更改後的用戶ID(選擇用戶彼得)在汽車選擇選項獲取所有汽車不包括奧迪(用戶彼得已經使用奧迪)。

也許是這樣的:

for car in self.env['tbl.car'].search([]): 
    for car_user in self.env['car.user'].search([('user_id','=','self.user_id.id]): 
    if (car.name = car_user.name): 
     print("DUPLICATE") 
    else: 
     print("ADD TO SELECT OPTION") 

任何簡單的解決方案?

回答

1

我的第一answar是正確的,現在我會給出一個解決方案,如果你不想改變選擇:

創建嚮導來影響汽車用戶:

class AffectCar(model.TransientModel): 
    _name = 'affect.user.car.wizard' 
    use_id = fields.Many2one(..) # you know how you do it 
    car_name = fields.Selection(selection='_get_car_selection', 'Car name') 

    def _get_car_selection(self): 
    """ 
     generate a selection for field car_name according to 
     the default user_id passed to this form 
    """ 
    # get all car name that this user don't have 
    # generate the selection [('car_name','car_name')..] 
    return computed_selection 

    def create_user_car(self): 
    """ save a new tbbl_car_user record """ 
    # this method is called from the form of the wizard 
    # save the user_id and the car_name in tbl_car_user 

現在加入鈕給用戶的形式和調用一個方法來與默認USER_ID打開向導形式是 同一用戶

@api.multi() 
def add_car(self): 
    """ 
     open the wizard to add a car 
     to this user 
    """ 
    return { 
     'type': 'ir.actions.act_window', 
     'view_mode': 'form', 
     'view_type': 'form', 
     'res_model':'affect.user.car.wizard', 
     'target': 'new', 
     'context': { 
      # pass the id the the user to the wizard 
      'default_use_id': self.id, 
     }, 
     } 

一件事情,以防止你的用戶APPLICATIO n顯示彈出窗口時更改user_id 使用戶在嚮導的窗體視圖中隱藏=「1」

<record id="add_car_wizard" model="ir.ui.view"> 
    <field name="name">tax.adjustments.wizard.form</field> 
    <field name="model">tax.adjustments.wizard</field> 
    <field name="arch" type="xml"> 
    <form> 
     <group> 
      <field name="user_id" invisible="1"/> 
      <field name="car_name"/> 
     </group> 
     <footer> 
      <button name="create_user_car" string="Add car" type="object" class="oe_highlight"/> 
      or 
      <button string="Cancel" special="cancel" /> 
     </footer> 
    </form> 
    </field> 
</record> 
0

這樣的問題不使用的選擇,甚至當你發現這一點,如果編輯記錄下一次選擇不會知道它包含的價值,因爲odoo將被除的值的所有值填充選區是它有。你會在選擇領域看到未知的價值。

,但如果你想這樣做不使用選擇使用many2one車名的選擇更改爲一個模型(表數據庫),並使用域名爲您many2one領域。

你不能做到通過選擇這個邏輯這個邏輯可以不要與選擇只爲嚮導。

field_selection = fields.Selection(selection='generate_selection') 

def generate_selection(self): 
    # compute selection 
    return computed_selection 

但是當視圖是加載在第一時間現在選擇的值不能被編輯或onchange事件改變其工作原理。