如何查询列表django


def get_queryset(self):
result = Tenants.objects.all()
filters = self.request.GET.get('filter')
if filters is not None:
filters = filters[1] if filters[1] == ',' else filters
filters_list = filters.split(',')
filter_result = Tenants.objects.none()
for value in filters_list:
filter_result = filter_result | result.filter(Q(business_type__icontains=value)
|Q(category__icontains=value))
return filter_result

return result.all()

这里我希望查询参数为business_type和category当使用get方法和检查数据时,我只能过滤一个字段business_type或category

当使用过滤器两次时/?page=1&filter=业务类型&filter=类别然后我得到我想要的数据

但是当url如下时,我需要数据/?page=1&filter=business_type,类别

您可以使用进行查询

def get_queryset(self):
result = Tenants.objects.all()
filters = self.request.GET.getlist('filter')
if not filters:
return Tenants.objects.all()
Tenants.objects.filter(
Q(*[
Q(business_type__icontains=value) | Q(category__icontains=value)
for filter in filters
for value in filter.split(',') if value
],
_connector=Q.OR
)
)

这里可以用来查找in(Django Docs(过滤器business_type__in=filters.split(",")

def get_queryset(self):
result = Tenants.objects.all()
filters = self.request.GET.get('filter')
if filters:
filter_result = result.filter(business_type__in=filters.split(","))
return filter_result

return result

最新更新