如何在列表查询中创建Django列表

rta7y2nd  于 2023-03-04  发布在  Go
关注(0)|答案(2)|浏览(112)

我有一个列表过滤器项目列表如下:[['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()
umuewwlo

umuewwlo1#

我可能会把列表的列表,并把它们扁平化成一个列表。

# 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)
zlhcx6iw

zlhcx6iw2#

首先,您应该将过滤器列表扁平化为单个列表,以便可以将其传递给__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)

相关问题