我有一個對象shipment
,其中有一個涉及many2one的字段product
,該字段引用了具有一個產品(many2one)的many2one對象contract
。當我創建一批貨物時,產品在我保存貨物之前不會顯示。另外,在編輯時,產品不會隨着合同而改變。如何在編輯表單中顯示/刷新相關字段
我試圖創建一個返回新的產品價值onchange事件,但沒有奏效。
是他們刷新相關領域的關係變化時的方法?
- 穆罕默德
我有一個對象shipment
,其中有一個涉及many2one的字段product
,該字段引用了具有一個產品(many2one)的many2one對象contract
。當我創建一批貨物時,產品在我保存貨物之前不會顯示。另外,在編輯時,產品不會隨着合同而改變。如何在編輯表單中顯示/刷新相關字段
我試圖創建一個返回新的產品價值onchange事件,但沒有奏效。
是他們刷新相關領域的關係變化時的方法?
我覺得sales.order
和stock.picking
標準的對象是非常接近你所需要的。你最好是擴展標準對象,而不是從頭開始創建新對象。
關於你的問題,你需要on_change
的行爲,所以你應該嘗試修復方法that's不能正常工作。 6.1中有一個很好的例子。請參閱crm/crm.py
中的crm_base
對象。
你可以看到它在行動中CRM的潛在客戶表單):選擇一個合作伙伴,地址和電子郵件時自動填充。您還需要查看crm\crm_lead_view.xml
中的視圖ID crm_case_form_view_oppor
,以檢查如何使用該方法。
型號代碼:
def onchange_partner_address_id(self, cr, uid, ids, add, email=False):
"""This function returns value of partner email based on Partner Address
:param ids: List of case IDs
:param add: Id of Partner's address
:param email: Partner's email ID
"""
data = {'value': {'email_from': False, 'phone':False}}
if add:
address = self.pool.get('res.partner.address').browse(cr, uid, add)
data['value'] = {'email_from': address and address.email or False ,
'phone': address and address.phone or False}
if 'phone' not in self._columns:
del data['value']['phone']
return data
def onchange_partner_id(self, cr, uid, ids, part, email=False):
"""This function returns value of partner address based on partner
:param ids: List of case IDs
:param part: Partner's id
:param email: Partner's email ID
"""
data={}
if part:
addr = self.pool.get('res.partner').address_get(cr, uid, [part], ['contact'])
data = {'partner_address_id': addr['contact']}
data.update(self.onchange_partner_address_id(cr, uid, ids, addr['contact'])['value'])
return {'value': data}
的觀點端代碼:
<field name="partner_id" select="1" colspan="2"
on_change="onchange_partner_id(partner_id, email_from)" string="Customer" />
<field name="partner_address_id" string="Contact" colspan="1"
on_change="onchange_partner_address_id(partner_address_id, email_from)" />
好阿里,
是在相關領域的情況下,你是正確的值將只有當你保存記錄顯示。因爲您保存了記錄,ORM將鏈接相關的字段值,網頁將讀回並顯示回來。
但是,要立即向您顯示值,您可以將用戶on_change
具有對任何字段的值進行更改的能力。
問候。
感謝您的幫助。 'onchange'壞了,所以我修好了。 – 2012-07-23 08:58:46
@firebug:on_change未在相關(m20)字段上觸發。 – StackUP 2014-12-10 12:55:08
非常感謝。我的'contract'實際上是'purchase.order'中的_inherits。另外,從'account.analytic.account'出貨'_inherits,並鏈接到多個'stock.picking'。我的'onchange'確實被打破了。謝謝。 – 2012-07-23 08:53:46
你可能彪周圍的其他方法:'contract'從'account.analytic.account'和''purchase.order'繼承shipment'inherits。 – 2012-07-23 09:35:45
編號'合同'是與海外供應商的長期採購合同。 'shipment'(實際上是'vessel')_inherits from'account.analytic.account',因爲每個產品貨物/船舶都是作爲一個項目來處理,並且有自己的開支和損益。 – 2012-07-23 11:44:43