Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Odoo-获取记录并将其转换为python对象_Python_Openerp_Odoo 8_Odoo 9_Odoo 10 - Fatal编程技术网

Odoo-获取记录并将其转换为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()我希望结果是单个用户对象或用户列表。如果没有,那么我们可以在获取后强

在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()我希望结果是单个用户对象或用户列表。如果没有,那么我们可以在获取后强制转换它们吗?

有一种方法可以在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
是有效用户,并且该组中有一些用户