OpenERP:获取具有相同名称的记录

Spi*_*gel 2 python openerp

如何在openerp(或其他相同的字段)中检索具有相同名称值的记录?

odo*_*ony 10

按照nameRuchir的建议使用手动SQL查询进行分组的解决方案可能是最简单的,但有点低级.您也可以使用read_group()执行类似GROUP BY查询的API方法来执行此操作,但不会绕过访问控制机制和模型业务逻辑.

read_group方法采用搜索域(类似于search()),要读取的字段列表(类似于read())和要分组的字段列表.OpenERP API中记录了此方法.它返回一个有序的字典列表,其中包含分组数据和一些额外值,包括存储在名为key的键中的每个组中的记录数<grouped_field>_count,您可以使用它来查找重复项.

例如,如果您查找重复name值,而没有任何其他搜索条件:

def duplicate_names(self, cr, uid, context=None):
    # Note: context not propagated for brevity of example
    groups = self.read_group(cr, uid, [], ['name'], ['name'])
    duplicate_names = [g['name'] for g in groups if g['name_count'] > 1]
    print "Duplicates names:", duplicate_names

    if duplicate_names:
        # It's easy to find out the IDs of duplicate records for each name,
        # here is for the first one
        duplicate_ids = self.search(cr, uid, [('name', '=', duplicate_names[0])])
        print "Duplicate IDs for %r: %s" % (duplicate_names[0], duplicate_ids)
Run Code Online (Sandbox Code Playgroud)