我必须将下面的查询集合并到一个列表中:
result_list_1 = Col.objects.defer("tags").filter(producer__username__icontains=crit)
result_list_2 = Col.objects.defer("tags").filter(name__icontains=crit)
result_list_3 = Col.objects.defer("tags").filter(description__icontains=crit)
result_list_4 = Col.objects.filter(tags__name__icontains=crit)
...
Run Code Online (Sandbox Code Playgroud)
每个 result_list 都包含项目,这些项目具有唯一的数字 ID,我可以使用它来确保没有重复。
我无法使用 | 查询 DB 或 Q 对象时。
如何将结果集合并到一个列表中?
稍微修改一下itertools.chain可以确保您不会被骗:
def unique_chain(*iterables):
known_ids = set()
for it in iterables:
for element in it:
if element.id not in known_ids:
known_ids.add(element.id)
yield element
Run Code Online (Sandbox Code Playgroud)
这样您就可以创建组合列表:
combined_list = list(unique_chain(result_list_1, result_list_2, ... ))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8096 次 |
| 最近记录: |