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模型类中