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_userクラスを示しています。bpl自分のページでユーザーを作成し、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
  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

これを試して、ヘッダーファイルとしてSUPERUSER_IDをインポートすることを忘れないでください

于 2015-07-23T12:42:44.583 に答える