我有一个列表过滤项目列表,如下所示:
[['3aa', '1ss', '2bb'], ['4aa', '5bb'], ['3nn', '9mm', '6cc']]
我的数据库表有一个字段,其中一个字段(类别)保存一个列表作为值:
['4aa', '5bb']
我如何查询以获取其类别在过滤器列表中的项目?
类似的东西:
Table.objects.filter(category__in=[['3aa', '1ss', '2bb'], ['4aa', '5bb'], ['3nn', '9mm', '6cc']])
Model:
Class Table(…):
category = models.jsonfield()
我可能会把列表的列表压平成一个列表。
# flatten list of lists
ls = [['3aa', '1ss', '2bb'], ['4aa', '5bb'], ['3nn', '9mm', '6cc']]
# iterate through list of lists in a nested loop
flat_ls = []
for i in ls:
for j in i:
flat_ls.append(j)
Table.objects.filter(category__in=flat_ls)
首先,您应该将过滤器列表展平为一个列表,以便您可以将其传递给
__in
查找,如下所示:
filter_list = [['3aa', '1ss', '2bb'], ['4aa', '5bb'], ['3nn', '9mm', '6cc']]
flat_filtered_list = [item for sublist in filter_list for item in sublist]
result = Table.objects.filter(category__in=flat_filtered_list)
精确查找有效吗? (
Table.objects.filter(category=['3aa', '1ss', '2bb'])
)q_conditions = Q()
for categories in categories_list:
q_conditions |= Q(category=categories)
Table.objects.filter(q_conditions)