在OpenERP中,能否通过一个类的create方法向另一个类的表中插入数据?
我有一个叫做 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)