Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.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 Listview显示0个结果_Python_Django_Listview_Templates - Fatal编程技术网

Python Django Listview显示0个结果

Python Django Listview显示0个结果,python,django,listview,templates,Python,Django,Listview,Templates,我有一个奇怪的情况(翻译:我缺少一些明显的东西),我有一个ListView,当我迭代queryset中的每个对象并产生结果时,该ListView呈现良好,但当我只返回queryset时,返回0个结果 class TestListView(ListView): model = Result context_object_name = 'results' template_name = 'cases/test_list2.html' def get_queryset(

我有一个奇怪的情况(翻译:我缺少一些明显的东西),我有一个ListView,当我迭代queryset中的每个对象并产生结果时,该ListView呈现良好,但当我只返回queryset时,返回0个结果

class TestListView(ListView):
    model = Result
    context_object_name = 'results'
    template_name = 'cases/test_list2.html'
    def get_queryset(self):
        # Get latest results
        results = Result.objects.filter(canonical=True,  environment__config__in=['staging', 'production']).order_by('test__id', '-created_at').distinct('test__id').select_related('test', 'environment')

        # Return Queryset
        return results  # type <class 'django.db.models.query.QuerySet'>, returns 0 elements from view
        for result in results:
            yield result  # returns correct number of results, assuming above 'Return Queryset' line is commented out

类TestListView(ListView):
模型=结果
上下文\对象\名称='results'
模板名称='cases/test\u list2.html'
def get_queryset(自我):
#获取最新结果
results=Result.objects.filter(canonical=True,environment\uu config\uu in=['staging','production'])。order\u by('test\uu id','-created\u at')。distinct('test\uu id')。选择与测试相关的('test','environment'))
#返回查询集
返回结果#类型,从视图中返回0个元素
对于结果中的结果:
yield result#返回正确数量的结果,假设上面的“Return Queryset”行被注释掉

我做错了什么?

在返回后删除for循环解决了我的问题:

class TestListView(ListView):
    model = Result
    context_object_name = 'results'
    template_name = 'cases/test_list2.html'
    def get_queryset(self):
        # Get latest results
        results = Result.objects.filter(canonical=True,  environment__config__in=['staging', 'production']).order_by('test__id', '-created_at').distinct('test__id').select_related('test', 'environment')

        # Return Queryset
        return results  # type <class 'django.db.models.query.QuerySet'>, returns 0 elements from view

类TestListView(ListView):
模型=结果
上下文\对象\名称='results'
模板名称='cases/test\u list2.html'
def get_queryset(自我):
#获取最新结果
results=Result.objects.filter(canonical=True,environment\uu config\uu in=['staging','production'])。order\u by('test\uu id','-created\u at')。distinct('test\uu id')。选择与测试相关的('test','environment'))
#返回查询集
返回结果#类型,从视图中返回0个元素

感谢@Hymns For Disco和@Selcuk

这毫无意义。这真的是你的全部代码吗?你一定在某处使用了queryset。你的评论帮了我的忙——在返回解决了问题后,从中删除for循环。但是现在我的问题是为什么?在python中
return
之后,函数中不会有更多的行execute@HymnsForDisco不是这样。Python仍然将函数视为生成器,在本例中,
return
语句实际上不会返回任何内容,只是简单地停止迭代。请看,在任何情况下,我所说的都是正确的,
返回后的语句将不会执行,无论是生成器还是函数。我想OP可能不熟悉这一点,因为在返回后放置代码应该是一个明显的危险信号