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
答案 0 :(得分:1)
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()
希望这有帮助!