2012-09-01 37 views
0

我是OpenERP的新手。我正在研究CRM模塊。我正在創建Bug模塊,它實際上由crm_claim繼承。我已經添加了一些額外的字段(複選框)。它的工作正常。
我對OpenERP的經驗很好。但是我被困在驗證的地步。其實我想要的是,如果沒有點擊複選框,用戶不能保存記錄。如果其中一個被點擊,它應該保存該記錄。我搜索了互聯網。我找不到任何確定的解決方案,但有些不明確的解決方案。以下是列表: -
有些帖子建議覆蓋寫入和創建。但我的問題是,我從crm_claim繼承,我沒有發現編寫和創建層次結構中的任何地方的功能。如果我重寫它們,我必須寫出所有的邏輯來保存整個聲明和上面的類。我覺得很困難。驗證openerp中的不同複選框

  1. 我試圖找到onsave事件,但我沒有找到任何。
  2. 有人建議使用嚮導來解決此問題。

我不知道該怎麼做。請在這方面幫助我。

回答

0

您不必重寫創建或寫入功能。因爲重複這樣的核心功能是不可取的,除非你沒有任何選擇。

在這種情況下,你有選擇。

請參閱銷售模塊插件/股票/ stock.py

你會發現_constraints,您可以使用相同的。它只會在選定字段的值將被更改時纔會檢查。它也有例外的提升設施。

+0

感謝..... it幫助 – noamanfaisal

+0

如果你只是想要一個警告:「沒有選中複選框,你確定嗎?」在驗證彈出窗口?這是我的情況。 讀取和寫入方法無法託管呼叫操作...是否? – yucer

+0

yucel。我認爲你可以寫onchange方法並在這種情況下返回警告。 –

-1

writecreate方法繼承自osv.osv模型,該模型在BaseModelserver/openerp/osv/orm.py中實現。

您不需要複製邏輯,只需調用原始方法即可。

例如,在模型中,添加以下方法:

def create(self, cr, uid, vals, context=None): 
    """ 
    Override osv.create() method to validate the data 
    """ 
    if not (vals['attr1'] or vals['attr2'] or vals['attr3']: 
     raise osv.except_osv(_('Warning !'),_("You have to choose at least one attribute")) 

    return super(my_model, self).create(cr, uid, vals, context)