2013-03-14 6 views
0

다음은 클래스 및 메서드입니다. 방금 ​​레코드를 가져오고 인쇄해야합니다.하지만 디버그 모드에서 openerp를 실행할 때 이 작동하지 않습니다. 해당 방법도 사용하지 마십시오. &도 OpenERP 7함수를 실행할 수 없습니다.

class namelistupdate(osv.osv): 
def _mytest_query(self, cr, uid, ids, name, args, context=None): 
    print ('here is demo sql query function result ') 
    cr.execute("""SELECT module,(id*5000)as result FROM ir_model_data WHERE id=1""") 
    res = cr.dictfetchall() 
    print ('here is demo sql query function result ') 
    print (res) 

def _invoiced_rate(self, cr, uid, ids, name, args, context): 
    self._mytest_query(self, cr, uid, ids, name, args, context) 
    amount_untaxed = 1 
    record_id = ids[0] 
    res = {record_id: 0.0} 
    if amount_untaxed == 0: 
     res[record_id] = 100.0 
    else: 
     res[record_id] = 50.0 
    return res 

_name = "checkroll.namelist.update" 
_description = "This table is for keeping Name list updates" 
_columns = {   
    'date': fields.date("Date"), 
    'val': fields.function(_invoiced_rate, method=True, type='float', string='Test', store=True), 
} 

namelistupdate 페칭 방법을 명확히 할 필요가()

오류는 함수에서 완전히 잘못된 함수를 호출하는 코드에 무슨 짓을

 
Client Traceback (most recent call last): File "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/addons/web/http.py", line 203, in dispatch 
    response["result"] = method(self, **self.params) File "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/addons/web/controllers/main.py", line 1074, in call_kw 
    return self._call_kw(req, model, method, args, kwargs) File "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/addons/web/controllers/main.py", line 1066, in _call_kw 
    return getattr(req.session.model(model), method)(*args, **kwargs) File "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/addons/web/session.py", line 43, in proxy 
    result = self.proxy.execute_kw(self.session._db, self.session._uid, self.session._password, self.model, method, args, kw) File "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/addons/web/session.py", line 31, in proxy_method 
    result = self.session.send(self.service_name, method, *args) File "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/addons/web/session.py", line 104, in send 
    raise xmlrpclib.Fault(openerp.tools.ustr(e), formatted_info) 


Server Traceback (most recent call last): File "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/addons/web/session.py", line 90, in send 
    return openerp.netsvc.dispatch_rpc(service_name, method, args) File "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/netsvc.py", line 293, in dispatch_rpc 
    result = ExportService.getService(service_name).dispatch(method, params) File "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/service/web_services.py", line 618, in dispatch 
    res = fn(db, uid, *params) File "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/osv/osv.py", line 188, in execute_kw 
    return self.execute(db, uid, obj, method, *args, **kw or {}) File "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/osv/osv.py", line 131, in wrapper 
    return f(self, dbname, *args, **kwargs) File "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/osv/osv.py", line 197, in execute 
    res = self.execute_cr(cr, uid, obj, method, *args, **kw) File "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/osv/osv.py", line 185, in execute_cr 
    return getattr(object, method)(cr, uid, *args, **kw) File "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/osv/orm.py", line 4479, in create 
    self.pool.get(object)._store_set_values(cr, user, ids, fields2, context) File "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/osv/orm.py", line 4627, in _store_set_values 
    result = self._columns[f].get(cr, self, ids, f, SUPERUSER_ID, context=context) File "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/osv/fields.py", line 1131, in get 
    result = self._fnct(obj, cr, uid, ids, name, self._arg, context) File "/home/priyan/Software/openerp-7.0-20130309-002120/openerp/addons/checkroll/checkroll.py", line 55, in _invoiced_rate 
    self._mytest_query(self, cr, uid, ids, name, args, context) TypeError: _mytest_query() takes exactly 7 arguments (8 given) 

답변

2

자기 키워드를 매개 변수 목록에서 제거하십시오.

1

이하?

파이썬에서 함수를 호출 할 때 지정하지 않은 함수 이름을 대괄호로 지정합니다.

두 번째 인수는 함수에서 인수의 수로 전달해야합니다.

그래서 코드는 다음과 같이해야합니다 :

def _invoiced_rate(self, cr, uid, ids, name, args, context): 
     self._mytest_query(cr, uid, ids, name, args, context) 
     amount_untaxed = 1 
     record_id = ids[0] 
     res = {record_id: 0.0} 
     if amount_untaxed == 0: 
      res[record_id] = 100.0 
     else: 
      res[record_id] = 50.0 
     return res 

을 완료 함수 반환 문이 필요 후, 그렇지 않으면 아무도 기본 없을 돌아갑니다.

당신은 파이썬에서 함수를 정의하는 방법을 참조하지만 수 있습니다 : 당신이 여기에 상세한 설명을 얻을 수 있습니다 openerp 기능에 대한 http://docs.python.org/2/tutorial/controlflow.html#defining-functions

: http://doc.openerp.com/v6.1/developer/03_modules_2.html "기능 필드"태그에서. 희망 도움말

+0

이제 오류가 AttributeError 온다 : 함수 이름의 함수 이름' –

+1

이 없습니다. Francesco Montesano 덕분에 나를 고쳐주었습니다 :) –

+0

예, 미안 해요 잊어 _mytest_query'있다 _ 'namelistupdate'객체는 당신이'_' 깜빡 더 속성 'mytest_query'을 – user1576199

관련 문제