2012-07-22 57 views
2

我有一個對象shipment,其中有一個涉及many2one的字段product,該字段引用了具有一個產品(many2one)的many2one對象contract。當我創建一批貨物時,產品在我保存貨物之前不會顯示。另外,在編輯時,產品不會隨着合同而改變。如何在編輯表單中顯示/刷新相關字段

我試圖創建一個返回新的產品價值onchange事件,但沒有奏效。

是他們刷新相關領域的關係變化時的方法?

  • 穆罕默德

回答

1

我覺得sales.orderstock.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)" /> 
+0

非常感謝。我的'contract'實際上是'purchase.order'中的_inherits。另外,從'account.analytic.account'出貨'_inherits,並鏈接到多個'stock.picking'。我的'onchange'確實被打破了。謝謝。 – 2012-07-23 08:53:46

+0

你可能彪周圍的其他方法:'contract'從'account.analytic.account'和''purchase.order'繼承shipment'inherits。 – 2012-07-23 09:35:45

+0

編號'合同'是與海外供應商的長期採購合同。 'shipment'(實際上是'vessel')_inherits from'account.analytic.account',因爲每個產品貨物/船舶都是作爲一個項目來處理,並且有自己的開支和損益。 – 2012-07-23 11:44:43

2

好阿里,

是在相關領域的情況下,你是正確的值將只有當你保存記錄顯示。因爲您保存了記錄,ORM將鏈接相關的字段值,網頁將讀回並顯示回來。

但是,要立即向您顯示值,您可以將用戶on_change具有對任何字段的值進行更改的能力。

問候。

+0

感謝您的幫助。 'onchange'壞了,所以我修好了。 – 2012-07-23 08:58:46

+0

@firebug:on_change未在相關(m20)字段上觸發。 – StackUP 2014-12-10 12:55:08

相關問題