Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 无法执行该函数_Python_Class_Function_Openerp - Fatal编程技术网

Python 无法执行该函数

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(

这是我的课程和方法。 我只是写了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("""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函数调用函数时,不要在函数中传递自参数