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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.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 - Fatal编程技术网

Python 我们可以在Django的同一视图中多次查询模型吗?

Python 我们可以在Django的同一视图中多次查询模型吗?,python,django,Python,Django,我一直在一个视频分享网站上工作。我正在使用Django 1.6。有一个用户可以观看任何特定视频的页面。此外,“热门视频”的一部分就在旁边,根据浏览量列出了热门视频。我想知道我们是否可以在一个视图函数中多次查询同一个模型。我的代码如下 def watch(request, video_id): video_to_watch = Video.objects.get(id=video_id) popular_videos = Video.objects.filter(views

我一直在一个视频分享网站上工作。我正在使用Django 1.6。有一个用户可以观看任何特定视频的页面。此外,“热门视频”的一部分就在旁边,根据浏览量列出了热门视频。我想知道我们是否可以在一个视图函数中多次查询同一个模型。我的代码如下

def watch(request, video_id):
      video_to_watch = Video.objects.get(id=video_id)
      popular_videos = Video.objects.filter(views__gt=100)

是的,您可以在单个视图中多次查询同一模型。

是的,您可以多次查询一个模型。对于您的场景,最好的方法是使用模型管理器

class PopularManager(models.Manager):
    def get_queryset(self):
        return super(PopularManager, self).get_queryset().filter(views__gt=100)

class Video(models.Model)
    ....
    popular = PopularManager()
你可以得到像这样的流行视频

popular_videos = Video.popular.all()

感谢catavaran,但是当我尝试将popular_videos上下文传递到模板中时,它不会显示为{popular_videos%}{{video.track_name}{%endfor%}将
print popular_videos
语句添加到视图中,并查看devserver控制台的输出。此列表是否为空?顺便说一句,django 1.6不再受支持,如果您现在开始,请从1.8开始,如果1.8还没有教程,请从1.7开始。感谢朋友们的真诚帮助,现在一切正常。如果您认为此答案有用,请使用完投票