2
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 
4

3 回答 3

1

只需添加销售类 _defaults 字典。OpenERP 在创建新对象时会自动调用它。

_defaults = {
        'company_id': get_default_company,
}

例如看这里。您可以在 OpenERP 模块代码中找到更多详细信息。

于 2014-04-22T07:51:07.413 回答
1

什么是 AttributeError:'NoneType'?

NoneType意味着任何ClassObject的函数或实例不与您一起使用,您实际上已经得到了None


你是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)
    }

并且您想创建功能字段是的,您可以创建检查此文档

于 2014-04-22T06:57:51.247 回答
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_idmany2one字段。喜欢

_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()

希望这可以帮助!

于 2014-04-22T09:26:07.023 回答