django - “列表”对象没有属性“过滤器”
问题描述
def g_view(request):
header_category = Category.objects.all()
m = Type1.objects.all()
r=Type2.objects.all()
g=Type3.objects.all()
from itertools import chain
orders=list(sorted(chain(m,r,g),key=lambda objects:objects.start))
mquery = request.GET.get('m')
if mquery:
orders = orders.filter(
Q(name__icontains=mquery) |
Q(game__name__icontains=mquery) |
Q(teams__name__icontains=mquery)).distinct()
(类型是抽象的,type1 type2 type3 是继承类)
我收到此错误“列表”对象没有属性“过滤器”
解决方案
基本上,当您使用chain
多个查询集时,您会失去查询集的能力。链接后,它们成为迭代器的一部分。您可以通过迭代或list
显式调用来访问迭代器的值。您需要在链接查询集之前执行查询。
query = Q(name__icontains=mquery) |
Q(game__name__icontains=mquery) |
Q(teams__name__icontains=mquery)
m = Type1.objects.filter(query).distinct()
r = Type2.objects.filter(query).distinct()
g = Type3.objects.filter(query).distinct()
orders=list(sorted(chain(m,r,g),key=lambda objects:objects.start))
推荐阅读
- postman - 如何将 newman 报告的结果发送给 Datadog?
- vim - Vim 弹出对话框无法调整大小
- python - 我尝试使代码在函数内打开文件,但出现错误
- autodesk-realitycapture - 过程以 100% 的进度和错误结束,同时为图像使用预签名的 url
- angular - 表单控件上的属性被删除(反应形式)
- mysql - 如何使用正则表达式在 MySql 中查找变量模式?
- javascript - 是否可以在不设置 scr 的情况下创建脚本标签?
- css - CSS 媒体查询解释分辨率而不是视口
- vscode-extensions - 带有 http URI 的 vscode TreeItem 图标
- java - 如何在eclipse中为maven servlet项目生成可执行jar文件并使用jar文件执行类?