我的第一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>