【问题标题】:None type object error when trying to use inherited Odoo object尝试使用继承的 Odoo 对象时出现无类型对象错误
【发布时间】:2015-12-03 10:29:50
【问题描述】:

我真的很坚持这一点。我在 Odoo 中创建了一个新类,我想从控制器调用它。当我将我创建的 id 字段传递给该对象时,该对象需要获取有关客户(res.partner)的数据。

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

我做错了什么?我是菜鸟吗?而且我是否让它变得比需要的更难?

这是我的类在一个名为 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'

谢谢

【问题讨论】:

    标签: python class inheritance openerp odoo-8


    【解决方案1】:

    你可以做这样的事情来使用类对象调用你的类方法。

    t = JiraParse()
    t.parse(requestdata)
    

    不直接调用您的方法的主要原因是因为您的方法不是静态方法,因此我们必须将该 parse 方法设为静态才能通过您的类名直接访问。所以它完全是面向对象概念的一部分。

    如果它在单独的文件中,那么您必须在 .py 文件中导入 JiraParse 类。

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

    希望我的回答对你有帮助:)

    【讨论】:

    • 我已经在控制器顶部有导入。问题不在于正常工作的导入。与实例化类一样。只有当我来调用类中的方法时它才不起作用。
    • 必须尝试从第一个选项中签出
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-15
    • 2019-06-07
    • 1970-01-01
    • 1970-01-01
    • 2013-11-20
    相关资源
    最近更新 更多