Python 无法执行该函数
这是我的课程和方法。 我只是写了get记录,需要打印它们。但是当在调试模式下运行openerp时,它不起作用&也不适用于该方法。&还需要澄清openerp 7的获取方法Python 无法执行该函数,python,class,function,openerp,Python,Class,Function,Openerp,这是我的课程和方法。 我只是写了get记录,需要打印它们。但是当在调试模式下运行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(
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)
客户端回溯(最后一次调用):文件“/home/priyan/Software/openerp-7.0-20130309-002120/openerp/addons/web/http.py”,第203行,发送中
响应[“结果”]=方法(self,**self.params)文件“/home/priyan/Software/openerp-7.0-20130309-002120/openerp/addons/web/controllers/main.py”,第1074行,在call_-kw中
返回self._call_kw(请求、模型、方法、参数、kwargs)文件“/home/priyan/Software/openerp-7.0-20130309-002120/openerp/addons/web/controllers/main.py”,第1066行,在_call_kw中
返回代理中第43行的getattr(req.session.model(model),method)(*args,**kwargs)文件“/home/priyan/Software/openerp-7.0-20130309-002120/openerp/addons/web/session.py”
结果=self.proxy.execute_kw(self.session.\u db,self.session.\u uid,self.session.\u密码,self.model,method,args,kw)文件“/home/priyan/Software/openerp-7.0-20130309-002120/openerp/addons/web/session.py”,proxy方法第31行
结果=self.session.send(self.service_name,method,*args)文件“/home/priyan/Software/openerp-7.0-20130309-002120/openerp/addons/web/session.py”,第104行,在send中
raise xmlrpclib.Fault(openerp.tools.ustr(e),格式化信息)
服务器回溯(最后一次调用):文件“/home/priyan/Software/openerp-7.0-20130309-002120/openerp/addons/web/session.py”,第90行,在send中
返回dispatch_rpc中第293行的openerp.netsvc.dispatch_rpc(服务名称、方法、参数)文件“/home/priyan/Software/openerp-7.0-20130309-002120/openerp/netsvc.py”
结果=ExportService.getService(service_name).dispatch(method,params)文件“/home/priyan/Software/openerp-7.0-20130309-002120/openerp/service/web_services.py”,第618行,在dispatch中
res=fn(db,uid,*params)文件“/home/priyan/Software/openerp-7.0-20130309-002120/openerp/osv/osv.py”,第188行,执行
返回self.execute(db、uid、obj、method、*args、**kw或{})文件“/home/priyan/Software/openerp-7.0-20130309-002120/openerp/osv/osv.py”,包装器中的第131行
返回f(self,dbname,*args,**kwargs)文件“/home/priyan/Software/openerp-7.0-20130309-002120/openerp/osv/osv.py”,第197行,执行
res=self.execute_cr(cr,uid,obj,method,*args,**kw)文件“/home/priyan/Software/openerp-7.0-20130309-002120/openerp/osv/osv.py”,execute_cr中第185行
在create中返回getattr(对象、方法)(cr、uid、*args、**kw)文件“/home/priyan/Software/openerp-7.0-20130309-002120/openerp/osv/orm.py”,第4479行
self.pool.get(object)。_store_set_values(cr、用户、ID、字段2、上下文)文件“/home/priyan/Software/openerp-7.0-20130309-002120/openerp/osv/orm.py”,第4627行,在_store_set_values中
结果=self.\u列[f]。get(cr、self、ID、f、超级用户\u ID、上下文=上下文)文件“/home/priyan/Software/openerp-7.0-20130309-002120/openerp/osv/fields.py”,get中的第1131行
结果=self.\u fnct(obj、cr、uid、id、name、self.\u arg、context)文件“/home/priyan/Software/openerp-7.0-20130309-002120/openerp/addons/checkroll/checkroll.py”,第55行,发票费率
self.\u mytest\u查询(self、cr、uid、id、name、args、context)类型错误:\u mytest\u query()正好接受7个参数(给定8个)
您在代码中所做的从函数调用函数的操作是完全错误的 在python中,为了调用函数,我们使用圆括号指定函数名,而您没有指定圆括号 第二,需要将参数作为函数中的参数数传递 因此,您的代码必须如下所示:
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
在完成函数返回语句后,否则返回None为默认值
您可以参考如何在python中定义函数:
对于openerp函数,您可以在这里得到详细的解释:“函数字段”标签下。
希望这些帮助您在代码中所做的从函数调用函数的操作是完全错误的 在python中,为了调用函数,我们使用圆括号指定函数名,而您没有指定圆括号 第二,需要将参数作为函数中的参数数传递 因此,您的代码必须如下所示:
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
在完成函数返回语句后,否则返回None为默认值
您可以参考如何在python中定义函数:
对于openerp函数,您可以在这里得到详细的解释:“函数字段”标签下。
希望此帮助删除参数列表中的self关键字 删除参数列表中的self关键字 现在出现的错误是AttributeError:“namelistupdate”对象没有属性“mytest\u query”您忘记了一个
\u
:函数名是\u mytest\u query
是的,很抱歉,我忘记了函数名。感谢Francesco Montesano纠正我:)现在错误是TypeError:\u mytest\u query()最多接受7个参数(给定8个参数)WTF!!!当从“开票”费率函数调用函数时,不要在函数中传递自变量现在错误出现为AttributeError:“namelistupdate”对象没有属性“mytest\u query”您忘记了一个:函数名为\u mytest\u query
是的,对不起,我忘记了函数名中的一个属性。感谢Francesco Montesano纠正我:)现在错误是TypeError:\u mytest\u query()最多接受7个参数(给定8个参数)WTF!!!从_invoited_rate函数调用函数时,不要在函数中传递自参数