AttributeError:'NoneType'对象没有属性'get_default_company'

时间:2014-04-22 06:45:41

标签: openerp openerp-7 openerp-8

class Sale(osv.osv):
_name = 'sale'

_columns = {
    'name': fields.char('Company Name', size=128)
}

def get_default_company(self, cr, uid, context=None):
    company_id = self.pool.get('res.users').browse(cr, uid, uid).company_id.id,
    return company_id
Sale()

我使用上面的代码,一切都很好,但我不知道在哪里以及如何调用我的函数get_default_company()。就像我称这种方法一样,它给出了

cr and uid invalids 

3 个答案:

答案 0 :(得分:1)

什么是AttributeError:' NoneType'?

  

NoneType 表示无法与您合作的 Class Object 的功能或实例,您实际上已经


Sale()发生此错误的原因是,您需要调用 get_default_company() 功能,并且调用此功能之前必须实施此方法。否则会给你错误( get_default_company 功能 不存在)。

class Sale(osv.osv): 
    _name = 'sale'

    def get_default_company(self, cr, uid, context=None):
        company_id = self.pool.get('res.users').browse(cr, uid, uid).company_id.id,
        return company_id

    get_default_company()             // Call this function

    _columns = {
         'name': fields.char('Company Name', size=128)
    }

你想创建功能字段是的,你可以创建一个 documentation

答案 1 :(得分:1)

只需添加Sale class _defaults dict即可。 OpenERP会在创建新对象时自动调用它。

_defaults = {
        'company_id': get_default_company,
}

例如,查看at here。 您可以在OpenERP模块代码中找到更多详细信息。

答案 2 :(得分:0)

您似乎需要为公司设置默认值。为此,您需要使用_defaults模型属性来设置字段的默认值。像

_defaults = {
    'company_id': get_company
}

在此方法之前,您需要定义get_company方法,该方法应返回公司ID,如

def get_company(self, cr, uid, context=None):
    user_rec = self.pool.get('res.users').browse(cr, uid, uid, context)
    return user_rec.company_id.id

对于所有这些,您需要_columns中的字段。因此,您还需要将company_id添加为many2one字段。像

_columns = {
    'name': fields.char('Company Name', size=128),
    'company_id': fields.many2one('res.company', "Company")
}

改变所有这些模型的样子,

class sale(osv.osv):
    _name = 'sale'

    _columns = {
        'name': fields.char('Company Name', size=128),
        'company_id': fields.many2one('res.company', "Company")
    }


    def get_company(self, cr, uid, context=None):
        user_rec = self.pool.get('res.users').browse(cr, uid, uid, context)
        return user_rec.company_id.id

    _defaults = {
        'company_id': get_company
    }

sale()

希望这有帮助!