Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:筛选外键_Python_Django_Model_Filter_Django Queryset - Fatal编程技术网

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()的结果显然更好。。。