0
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_userbpl模型中的类。我将在我的页面中创建用户,并在res_users我在这里创建用户时添加记录。

问题现在是我的用户在res_users表中创建,但不在bpl_res_users表中。当我按下save按钮时,它会等待表单视图而不是导航到树视图。控制台中没有显示任何错误。

我在这里上传了我的整个代码@GitHub

4

5 回答 5

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
感谢您的 4 条建议

于 2013-04-15T09:25:58.940 回答
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 模型是如何创建的。

于 2013-04-16T18:34:13.583 回答
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']
                                                  })
于 2013-04-15T06:24:22.463 回答
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 添加相关的视图、操作和菜单。更新您的模块并检查它。

于 2013-04-15T06:33:12.160 回答
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 导入 SUPERUSER_ID作为头文件

于 2015-07-23T12:42:44.583 回答