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_user
模型中的bpl
课程。当我在这里创建用户时,我将在我的页面中创建用户并在res_users
中添加记录。
问题现在我的用户正在res_users
表中创建,但不在bpl_res_users
表中创建。当我按下save
按钮时,它会在表单视图上等待,而不是导航到树视图。控制台中没有显示错误。
我上传了整个代码here @ GitHub
答案 0 :(得分:2)
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()
现在它起作用了。需要添加super()方法..现在保存两个表中的记录。
@Arya
谢谢你的建议
答案 1 :(得分:2)
更好的解决方案是
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模型。
答案 2 :(得分:1)
你在代码中做了什么
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']
})
res_users_obj = self.pool.get('res.users') 您汇集res.user对象,而不是使用
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']
})
答案 3 :(得分:0)
试试这个:
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添加相关的视图,操作和菜单。更新您的模块并进行检查。
答案 4 :(得分:0)
def write_employee(self, cr, uid, ids, context=None):
user_id=self.browse(cr,uid,ids,context=context).user_id
if not user_id:
for rec in self.browse(cr,uid, ids, context=context):
vals = { 'name':rec.name , 'login':rec.work_email,'active':True }
user=self.pool.get('res.users').create( cr, uid, vals, context=context )
self.write( cr, SUPERUSER_ID, ids, {'user_id':user})
return True
试试这个并且忘记将从openerp import SUPERUSER_ID 作为头文件