我想使用列表在 Django 中运行查询。我在堆栈溢出上找到了一个类似的帖子,它使我达到了现在的位置,但我似乎无法让我的代码正常工作。我认为唯一的区别是我使用的是 REST。我下面的代码抛出错误unsupported operand type(s) for &: 'Build' and 'Build'
我期望的是查询将返回 author_id 与 machineOwned 列表中的任何值匹配的所有条目。
from .models import Build
import operator
from functools import reduce
class buildStatsAPI(generics.ListCreateAPIView):#for build stats
permission_classes = (permissions.IsAuthenticated,)
serializer_class = buildStatsAPI_serializer
def get_queryset(self):
machinesOwned = [4,5,7,9]
query = reduce(operator.and_, (Build(author_id= item) for item in [machinesOwned]))
return Build.objects.filter(query,deleted = 0,).values()
您可以动态创建Q
对象列表,但您可以通过另一种方式更有效地执行此操作:
Build.objects.filter(
deleted=0,
author_id__in=machinesOwned,
).values()
否则,如果您采用当前的方法:
from django.db.models import Q
query = reduce(operator.and_, (Q(author_id= item) for item in machinesOwned))
Build.objects.filter(query,deleted = 0,).values()
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句