Django ';列表';对象没有属性';过滤器';

Django ';列表';对象没有属性';过滤器';,django,django-models,django-views,Django,Django Models,Django Views,(类型是抽象的,类型1类型2类型3是继承的类) 我发现这个错误“list”对象没有属性“filter”基本上,当你使用多个queryset时,你就失去了queryset的功能。链接后,它们成为迭代器的一部分。您可以通过迭代迭代器或显式调用list来访问迭代器的值。您需要在链接查询集之前执行查询 def g_view(request): header_category = Category.objects.all() m = Type1.objects.all() r=Ty

(类型是抽象的,类型1类型2类型3是继承的类)

我发现这个错误“list”对象没有属性“filter”

基本上,当你使用多个queryset时,你就失去了queryset的功能。链接后,它们成为迭代器的一部分。您可以通过迭代迭代器或显式调用
list
来访问迭代器的值。您需要在链接查询集之前执行查询

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()
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))