0

CRM モジュールには、携帯電話番号フィールドがあります。しかし、それはchar私がアルファベット文字も追加できるフィールドです. 数字のみで動作することをお勧めします。で置き換えましmobile:fields.char('Mobile',size=20)mobile:field.integer('Mobile')が、最大9桁まで追加できます。整数のみで携帯電話番号を追加する他の方法はありますか? PostgreSQLを使用しているため、1つのデータ型として数値があるため、次のようにmobile:fields.numeric('Mobile',size=10)エラーがスローされることも試しました。

"datatype not used in module".
4

2 に答える 2

4

正規表現を使用して検証する

import re
from osv import osv,fields
class crm_lead_inherit(osv.osv):
    _name = _inherit = 'crm.lead'
    def create(self,cr,uid,vals,context=None):   
       if 'mobile' in vals and vals['mobile']:
            if re.match("^[0-9]*$", vals['mobile']) != None:
               pass
            else:
               raise osv.except_osv(_('Invalid Mobile No'),_('Please enter a valid Phone Number'))   
       return super(crm_lead_inherit, self).create(cr, uid,vals, context=context)
   def write(self,cr,uid,ids,vals,context=None):   
       if 'mobile' in vals and vals['mobile']:
            if re.match("^[0-9]*$", vals['mobile']) != None:
               pass
            else:
               raise osv.except_osv(_('Invalid Mobile No'),_('Please enter a valid Phone Number'))   
       return super(crm_lead_inherit, self).write(cr, uid,ids,vals, context=context)
crm_lead_inherit()
于 2014-02-21T06:27:54.327 に答える
1

センチルナタンの解決策は部分的に正しいです。また、作成、書き込み、検索機能を変更するのもよくありません。したがって、私の意見は、モバイル フィールドに on_change 機能を使用することです。xml ビューで onchange を追加します。

<field name="mobile" on_change="onchange_mobile(mobile)"/>

次に、crmlead クラス内の crmlead の python ファイルで、

def onchange_mobile(self, cr, uid, ids, mobile, context=None):
    if not mobile:
        return {}
    mobile = mobile.replace('.','') #removes any '.' from the string
    mobile = mobile.replace(' ','') #removes space from the string
    if not mobile.isdigit():
        raise osv.except_osv(_('Invalid Mobile No'),_('Please enter a valid Phone Number'))   
    return {}

必要に応じて、交換部品を取り外すことができます。

于 2014-02-24T05:39:13.507 に答える