Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/301.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 尝试使用继承的Odoo对象时出现无类型对象错误_Python_Class_Inheritance_Openerp_Odoo 8 - Fatal编程技术网

Python 尝试使用继承的Odoo对象时出现无类型对象错误

Python 尝试使用继承的Odoo对象时出现无类型对象错误,python,class,inheritance,openerp,odoo-8,Python,Class,Inheritance,Openerp,Odoo 8,我真的被这件事缠住了。我在Odoo中创建了一个新类,希望从控制器调用该类。当我向该对象传递我创建的id字段时,该对象需要获取有关客户(res.partner)的数据 我的问题是,我似乎无法在我的类中调用我的解析方法。然而,我这样做,我得到一个非类型对象没有属性解析 我做错了什么?我是傻瓜吗?我是不是也让事情变得更难了 这是一个名为callback.py的文件中的类 __author__ = 'karl' import requests import json from openerp impor

我真的被这件事缠住了。我在Odoo中创建了一个新类,希望从控制器调用该类。当我向该对象传递我创建的id字段时,该对象需要获取有关客户(res.partner)的数据

我的问题是,我似乎无法在我的类中调用我的解析方法。然而,我这样做,我得到一个非类型对象没有属性解析

我做错了什么?我是傻瓜吗?我是不是也让事情变得更难了

这是一个名为callback.py的文件中的类

__author__ = 'karl'
import requests
import json
from openerp import models, api
import logging

_logger = logging.getLogger(__name__)


class JiraParse(models.Model):
    _name = "res.parter"
    _inherit = "res.partner"

    def readname(self,jira_id):
        query = """
        SELECT name
        FROM res.partner
        WHERE jira_id = {0}
        """.format(jira_id)

        self.env.cr.execute(query)
        result = [(row[0], row[0]) for row in self.env.cr.fetchall()]
        _logger.info(str(result))
        return result

    def parse(self,data):
        #load json data
        R = json.loads(data)
        Customer = R['issue']['fields']['customfield_10128']
        CustomerId = R['issue']['fields']['customfield_10128']['id']
        issue_url = R['issue']['self']



        res = self.readname(CustomerId)
        _logger.info(str(res))
        #create dictionary/json callback object
        json_response = {'fields':
                             {'customfield_10128':{'value': 'ISYS Group'}
                              }}
        #json_response = Customer,CustomerId,issue_url
        #Make call back request to Jira to update customer data
        H = {'Content-Type':'application/json'}
        req = requests.post('http://10.10.15.39:5000', data=json.dumps(json_response), headers=H)
        return True
我试图从我的控制器调用它,如下所示:

t = callback.JiraParse()
t.parse(requestdata)
其中requestdata是控制器接收的json对象

我得到的只是这个

AttributeError: 'NoneType' object has no attribute 'parse'

感谢您使用类对象调用类方法,您可以执行类似的操作

t = JiraParse()
t.parse(requestdata)
不直接调用方法的主要原因是,您的方法不是静态方法,因此我们必须将该解析方法设置为静态,以便通过类名直接访问。因此,它完全是面向对象概念的一部分

如果它位于单独的文件中,则必须在.py文件中导入JiraParse类

from callback import JiraParse
t = JiraParse()
t.parse(requestdata)

我希望我的回答能对您有所帮助:)

我已经在控制器的顶部设置了导入。问题不在于有效的进口。实例化类也是如此。只有当我来调用类中的方法时,它才不起作用。必须尝试从第一个选项中签出