在OpenERP中,能否通过一个类的create方法向另一个类的表中插入数据?

0 投票
1 回答
605 浏览
提问于 2025-04-17 15:50

我有一个叫做 class student 的类,我的想法是每次调用这个类的时候,都需要往另一个表里插入一些数据,这个表我们叫它 logs,它对应的类是 class logs,并且有自己的 logs 表。

问题是,当我调用

logs.create(cr, uid, i, context)

class student 里面,OpenERP 会给我返回一个错误:

unbound method create() must be called with logs instance as first argument (got Cursor instance instead)

我尝试把 cr 改成 logs,但还是会出现类似的错误。

我想知道,是否可以在一个类里面插入另一个类创建的表的记录?

如果有任何建议或者模块可以实现这个功能,我会非常感激。谢谢!

编辑:我意识到也许我可以在我的 students class 里面调用

cr.execute()

用一个 INSERT INTO 语句,但我不确定这是否是解决问题的 合适 方法。

1 个回答

2

如果 logs 是一个从 orm.Model(或者 osv.osv)派生出来的类,那么你需要从模型池中获取这个模型对象,然后就可以使用 create 方法了:

from openerp.osv import orm, fields
class logs(orm.Model):
    _name = 'logs'
    _columns = {'name': fields.char('Name', ...),
                'message': fields.char('Message', ...),
               }
    # ...

class student(orm.Model):
    _name = 'student'
    _columns = {...}
    def some_method(self, cr, uid, ids, context=None):
        # get the logs model
        logs_obj = self.pool.get('logs')
        # prepare the value dict for new entry
        values = {'name': val_of_the_name_col,
                  'message':  val_of_the_message_col,
                  }
        # call create
        log_id = logs_obj.create(cr, uid, value, context=context)

撰写回答