Python OpenERP用户自定义错误
上面的代码显示了Python OpenERP用户自定义错误,python,openerp,Python,Openerp,上面的代码显示了bpl模型中我的resu user类。我将在我的页面中创建用户,并在这里创建用户时在res\u users中添加记录 问题是现在我的用户正在res\u users表中创建,但不是在bpl\u res\u users表中创建。当我按下save按钮时,它会在表单视图上等待,而不是导航到树视图。控制台中未显示任何错误 我上传了我的全部代码你在代码中做的是什么 class res_users(osv.osv): def create(self, cr, uid, values,
bpl
模型中我的resu user
类。我将在我的页面中创建用户,并在这里创建用户时在res\u users
中添加记录
问题是现在我的用户正在res\u users
表中创建,但不是在bpl\u res\u users
表中创建。当我按下save
按钮时,它会在表单视图上等待,而不是导航到树视图。控制台中未显示任何错误
我上传了我的全部代码你在代码中做的是什么
class res_users(osv.osv):
def create(self, cr, uid, values, context=None):
res_users_obj = self.pool.get('res.users')
# res_users_obj.create(cr, uid, values)
return res_users_obj.create(cr, uid, {
'login': values['login'],
'password': values['password'],
'company_id': values['bpl_company_id'],
'partner_id': values['officer_id'],
'name': values['login']
})
# _inherit = "res.users"
_name = "bpl.res.users"
_columns = {
'bpl_company_id':fields.many2one(
'bpl.company.n.registration',
'Company'),
'bpl_estate_id':fields.many2one(
'bpl.estate.n.registration',
'Estate',
help='Estate',
domain="[('company_id','=',bpl_company_id)]"),
'officer_id':fields.many2one(
'bpl.officer',
'User',
domain="[('bpl_company_id','=',bpl_company_id)]"),
'login': fields.char('Login', size=20),
'password': fields.char('Password', size=20),
}
res_users()
res\u users\u obj=self.pool.get('res.users'))
您正在共享res.user对象,而不是使用
def create(self, cr, uid, values, context=None):
res_users_obj = self.pool.get('res.users')
# res_users_obj.create(cr, uid, values)
return res_users_obj.create(cr, uid, { 'login': values['login'],
'password': values['password'],
'company_id': values['bpl_company_id'],
'partner_id': values['officer_id'],
'name': values['login']
})
您在代码中所做的是
class res_users(osv.osv):
def create(self, cr, uid, values, context=None):
res_users_obj = self.pool.get('res.users')
# res_users_obj.create(cr, uid, values)
return res_users_obj.create(cr, uid, {
'login': values['login'],
'password': values['password'],
'company_id': values['bpl_company_id'],
'partner_id': values['officer_id'],
'name': values['login']
})
# _inherit = "res.users"
_name = "bpl.res.users"
_columns = {
'bpl_company_id':fields.many2one(
'bpl.company.n.registration',
'Company'),
'bpl_estate_id':fields.many2one(
'bpl.estate.n.registration',
'Estate',
help='Estate',
domain="[('company_id','=',bpl_company_id)]"),
'officer_id':fields.many2one(
'bpl.officer',
'User',
domain="[('bpl_company_id','=',bpl_company_id)]"),
'login': fields.char('Login', size=20),
'password': fields.char('Password', size=20),
}
res_users()
res\u users\u obj=self.pool.get('res.users'))
您正在共享res.user对象,而不是使用
def create(self, cr, uid, values, context=None):
res_users_obj = self.pool.get('res.users')
# res_users_obj.create(cr, uid, values)
return res_users_obj.create(cr, uid, { 'login': values['login'],
'password': values['password'],
'company_id': values['bpl_company_id'],
'partner_id': values['officer_id'],
'name': values['login']
})
试试这个:
def create(self, cr, uid, values, context=None):
return self.create(cr, uid, { 'login': values['login'],
'password': values['password'],
'company_id': values['bpl_company_id'],
'partner_id': values['officer_id'],
'name': values['login']
})
从xml中添加相关视图、操作和菜单。更新您的模块并检查它。尝试以下操作:
def create(self, cr, uid, values, context=None):
return self.create(cr, uid, { 'login': values['login'],
'password': values['password'],
'company_id': values['bpl_company_id'],
'partner_id': values['officer_id'],
'name': values['login']
})
class bpl_res_users(osv.osv):
_name = "bpl.res.users"
_columns = {
'bpl_company_id':fields.many2one('bpl.company.n.registration', 'Company'),
'bpl_estate_id':fields.many2one('bpl.estate.n.registration', 'Estate', help='Estate', domain="[('company_id','=',bpl_company_id)]"),
'officer_id':fields.many2one('bpl.officer', 'User', domain="[('bpl_company_id','=',bpl_company_id)]"),
'login': fields.char('Login', size=20),
'password': fields.char('Password', size=20),
}
bpl_res_users()
从xml中添加相关视图、操作和菜单。更新您的模块并检查它
class bpl_res_users(osv.osv):
_name = "bpl.res.users"
_columns = {
'bpl_company_id':fields.many2one('bpl.company.n.registration', 'Company'),
'bpl_estate_id':fields.many2one('bpl.estate.n.registration', 'Estate', help='Estate', domain="[('company_id','=',bpl_company_id)]"),
'officer_id':fields.many2one('bpl.officer', 'User', domain="[('bpl_company_id','=',bpl_company_id)]"),
'login': fields.char('Login', size=20),
'password': fields.char('Password', size=20),
}
bpl_res_users()
现在它成功了。它需要添加super()方法。现在将记录保存在两个表中
@雅利雅谢谢你的建议 现在它成功了。它需要添加super()方法。现在将记录保存在两个表中 @雅利雅
感谢您的4条建议更好的解决方案是
class res_users(osv.osv):
def create(self, cr, uid, values, context=None):
res_users_obj = self.pool.get('res.users')
res_users_obj.create(cr, uid, {
'login': values['login'],
'password': values['password'],
'company_id': values['bpl_company_id'],
'partner_id': values['officer_id'],
'name': values['login'],
}, context=context)
return super(res_users, self).create(cr, uid, values, context=context)
# _inherit = "res.users"
_name = "bpl.res.users"
_columns = {
'bpl_company_id':fields.many2one('bpl.company.n.registration', 'Company'),
'bpl_estate_id':fields.many2one('bpl.estate.n.registration', 'Estate', help='Estate', domain="[('company_id','=',bpl_company_id)]"),
'officer_id':fields.many2one('bpl.officer', 'User', domain="[('bpl_company_id','=',bpl_company_id)]"),
'login': fields.char('Login', size=20),
'password': fields.char('Password', size=20),
}
res_users()
如果在此bpl.res.users模型中创建记录,则将在res.users中自动创建记录。您可以在base
模块中找到类似的示例。检查res.users模型是如何创建的。最好的解决方案是
class res_users(osv.osv):
def create(self, cr, uid, values, context=None):
res_users_obj = self.pool.get('res.users')
res_users_obj.create(cr, uid, {
'login': values['login'],
'password': values['password'],
'company_id': values['bpl_company_id'],
'partner_id': values['officer_id'],
'name': values['login'],
}, context=context)
return super(res_users, self).create(cr, uid, values, context=context)
# _inherit = "res.users"
_name = "bpl.res.users"
_columns = {
'bpl_company_id':fields.many2one('bpl.company.n.registration', 'Company'),
'bpl_estate_id':fields.many2one('bpl.estate.n.registration', 'Estate', help='Estate', domain="[('company_id','=',bpl_company_id)]"),
'officer_id':fields.many2one('bpl.officer', 'User', domain="[('bpl_company_id','=',bpl_company_id)]"),
'login': fields.char('Login', size=20),
'password': fields.char('Password', size=20),
}
res_users()
class bpl_res_users(osv.osv):
_inherits = {
'res.users': 'user_id',
}
_name = "bpl.res.users"
_columns = {
'user_id': fields.many2one('res.users', required=True,
string='Related User', ondelete='restrict',
help='User-related data of the bpluser'),
#define all other additional fields needed in your new model.
}
bpl_res_users()
如果在此bpl.res.users模型中创建记录,则将在res.users中自动创建记录。您可以在base
模块中找到类似的示例。检查res.users模型是如何创建的
class bpl_res_users(osv.osv):
_inherits = {
'res.users': 'user_id',
}
_name = "bpl.res.users"
_columns = {
'user_id': fields.many2one('res.users', required=True,
string='Related User', ondelete='restrict',
help='User-related data of the bpluser'),
#define all other additional fields needed in your new model.
}
bpl_res_users()
试试这个,别忘了将openerp导入超级用户ID中的作为头文件
试试这个,别忘了将openerp导入超级用户ID中的作为头文件
谢谢,我试过了,朋友,但还没分类。不记录保存在bpl_res_users表中。谢谢,我尝试了它,朋友。但还没有排序。not记录保存在bpl_res_users表中。嗨,朋友,根据您的代码,它试图只保存bpl_res_users表中的记录。但我也需要保存在res_users表中。因为在记录时间时openerp会检查res_users表中的用户名和密码。请给我一些建议。当我尝试你的答案时,它给了我一个错误,因为在创建函数中,我包含了一些不在bpl_res_users model classhi friend中的字段名称,根据你的代码,它试图只在bpl_res_users表中保存记录。但我还需要保存在res_users表中。因为在记录时间中,openerp会检查res_users表中的用户名和密码。请给我一些建议。当我尝试你的答案时,它给了我一个错误,因为在create函数中我包含了一些字段名,这些字段名不在bpl_res_users模型类中