Python Django:筛选外键
我有以下代码:Python Django:筛选外键,python,django,model,filter,django-queryset,Python,Django,Model,Filter,Django Queryset,我有以下代码: query = Entry.objects.all() print 'authors ' + repr([x.id for x in authors]) print 'query ' + repr(query) print 'query ids ' + repr([x.author.id for x in query]) query.filter(author__in=authors)
query = Entry.objects.all()
print 'authors ' + repr([x.id for x in authors])
print 'query ' + repr(query)
print 'query ids ' + repr([x.author.id for x in query])
query.filter(author__in=authors)
print 'filtered ids ' + repr([x.author.id for x in query])
哪个输出:
authors [2]
query [<Entry: test>, <Entry: test>]
query ids [2, 3]
filtered ids [2, 3]
作者[2]
查询[,]
查询ID[2,3]
过滤ID[2,3]
显然,3不在[2]中。那么,为什么过滤ID是[2,3],而不仅仅是[2]
关于请尝试此选项,而不是当前的筛选器:
query = query.filter(author__in=authors)
请尝试以下操作,而不是使用当前筛选器:
query = query.filter(author__in=authors)
当您调用
query.filter(author\uu in=authors)
时,它将返回一个新的queryset。它不会修改现有的查询集
如果将新的queryset分配给query,则将得到预期的结果
query = query.filter(author__in=authors)
print 'filtered ids ' + repr([x.author.id for x in query])
当您调用
query.filter(author\uu in=authors)
时,它将返回一个新的queryset。它不会修改现有的查询集
如果将新的queryset分配给query,则将得到预期的结果
query = query.filter(author__in=authors)
print 'filtered ids ' + repr([x.author.id for x in query])
没有关系。分配.filter()的结果显然更好…无需担心。分配.filter()的结果显然更好。。。