Odoo-获取记录并将其转换为python对象
在ODOO10-e中,可以执行查询,然后将结果列表或元组转换为python对象。像Odoo-获取记录并将其转换为python对象,python,openerp,odoo-8,odoo-9,odoo-10,Python,Openerp,Odoo 8,Odoo 9,Odoo 10,在ODOO10-e中,可以执行查询,然后将结果列表或元组转换为python对象。像 self.env.cr.execute("SELECT * FROM res.users WHERE Id = 1") 在上面的查询中,它将返回一条记录 self.env.cr.execute("SELECT * FROM res.users") 现在这个查询将返回一个用户列表。现在有没有办法告诉self.env.cr.fetchall()我希望结果是单个用户对象或用户列表。如果没有,那么我们可以在获取后强
self.env.cr.execute("SELECT * FROM res.users WHERE Id = 1")
在上面的查询中,它将返回一条记录
self.env.cr.execute("SELECT * FROM res.users")
现在这个查询将返回一个用户列表。现在有没有办法告诉self.env.cr.fetchall()我希望结果是单个用户对象或用户列表。如果没有,那么我们可以在获取后强制转换它们吗?有一种方法可以在python列表对象中获得结果
qry = """select id from res_partner where parent_id is Null;"""
self._cr.execute(qry)
result = self._cr.dictfetchall()
user_ids=[]
for ids in result:
user_ids.append(ids.get('id'))
在
user\u ID
变量中,您可以获得所有res.partner的ID。您可以通过以下方式获得它:
q = "select * from res_users where id = 1"
#q = "select * from res_users"
self.env.cr.execute(q)
res = self.env.cr.dictfetchall()
users = self.env['res.users'].browse([row['id'] for row in res])
使用dictfetchall()和using browse()方法获取用户的记录集
这可能会对您有所帮助。对于那些简单的查询,只需使用ORM层即可。有一些简单的方法(例如,对于典型的CRUD->创建、读取、更新、删除): 创建->创建(VAL)
#在数据库中创建用户并
#将此用户作为python对象(记录集)返回
created_user=self.env['res.users'].create({'name':'New user'})
浏览->浏览(ID列表)
#读取整个数据库行并
#返回python对象(记录集)
browsed_users=self.env['res.users'].browse([1,2])
搜索->搜索(域)
#使用Odoo的域语法搜索数据库
#如果找到某个对象,则返回python对象
域=[('name','=','newuser')]
searched_users=self.env['res.users'].search(域)
这些例子只触及表面。查看以获取更多信息
编辑:使用ORM层有优点也有缺点。但在Odoo的环境中,有一个非常大的优势:该层集成了用户访问控制。这只是一个很大的优势。为什么不使用ORM层呢?很抱歉,我不认为有必要用这样的例子来绕过ORM层。@CZoellner实际上我是Odoo的新手,我不知道如何用ORM来获取那些看起来不错的,我能用这个
浏览
做更多的事情吗?我怎样才能只使用组1
中的用户。假设组1
是有效用户,并且该组中有一些用户