odo*_*ony 10
按照name
Ruchir的建议使用手动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)
归档时间: |
|
查看次数: |
5030 次 |
最近记录: |