当我这样做时:
qs1 = User.objects.filter(first_name__icontains=search).filter(is_superuser=False)
qs2 = User.objects.filter(last_name__icontains=search).filter(is_superuser=False)
users = sorted(set(chain(qs1, qs2)))
我得到这个错误:
'<' not supported between instances of 'User' and 'User'
链接Queryset
s通常不是一个好主意,因为您无法进一步筛选、注释这些,而且它会导致两个(或多个(查询。
您可以将两个QuerySet
与结合使用
from django.db.models importQ
User.objects.filter(
Q(first_name__icontains=search) | Q(last_name__icontains=search),
is_superuser=False
).order_by('pk')
这将导致元素为User
对象的单个查询。
尝试类似的东西
qs1 = User.objects.filter(first_name__icontains=search).filter(is_superuser=False)
qs2 = User.objects.filter(last_name__icontains=search).filter(is_superuser=False)
qs1 = qs1.values_list('id', flat=True)
qs2 = qs1.values_list('id', flat=True)
users = sorted(set(chain(list(qs1), list(qs2))))