openerp create&;编写orm方法
有人能解释一下openerp中创建和编写orm方法的工作原理吗?事实上,我一直在使用这种方法,我不知道它在内部是如何工作的,如何在一个简单的程序上实现它openerp create&;编写orm方法,openerp,Openerp,有人能解释一下openerp中创建和编写orm方法的工作原理吗?事实上,我一直在使用这种方法,我不知道它在内部是如何工作的,如何在一个简单的程序上实现它 class dumval(osv.osv): _name = 'dum_val' _columns={ 'state':fields.selection([('done','confirm'),('cancel','cancelled')],'position',readonly=True),
class dumval(osv.osv):
_name = 'dum_val'
_columns={
'state':fields.selection([('done','confirm'),('cancel','cancelled')],'position',readonly=True),
'name':fields.char('Name',size=40,required=True,states={'done':[('required','False')]}),
'lname':fields.char('Last name',size=40,required=True),
'fname':fields.char('Full name',size=80,readonly=True),
'addr':fields.char('Address',size=40,required=True,help='enter address'),
}
_defaults = {
'state':'done',
}
如果你能用这个例子来解释,那就太好了。按照惯例,给_起的名字应该是dum.val,而不是dum\u val。 在dumval类中,您可以编写一个方法:
def abc(cr, uid, ids, context=None):
create_dict = {'name':'xxx','lname':'xxx','fname':'xxx','addr':'xyz'}
# create new object and get id
new_id = self.create(cr, uid, write_dict, context=context)
# write on new object
self.write(cr, uid, new_id, {'lname':'yyy'}, context=context)
有关更多详细信息,请查看:几条评论,再加上一点细节
write方法更新现有记录(SQL更新)。它接受一组值,并应用于您传递的所有ID。这一点很重要,如果您传递ID列表,则这些值将写入所有ID。如果您要更新单个记录,请传递一个条目列表,如果您要对记录进行不同的更新,则必须执行多个写调用。您还可以管理相关的f雅思写作。谢谢卢卡斯,这对我很有帮助。我对这个openerp完全是新手,所以我的下一个问题可能看起来有点愚蠢。使用创建和编写方法后,那些字典键、值会出现在我的数据库表中吗?是的。你可以通过:res=self.read(cr,uid,[new_id],'name','lname','fname','addr',context=context)获得它你应该使用res self.browse(cr,uid,new_id,context=context)而不是read.browse利用延迟加载,初始化缓存等。谢谢Adrian Merrall。它非常有用,在使用创建和写入方法后,我在数据库中看到了记录,现在一切都很清楚了。。