在Python的Django框架中显示对象子集的方法

yipeiwu_com6年前Python基础

现在让我们来仔细看看这个 queryset 。 大多数通用视图有一个queryset参数,这个参数告诉视图要显示对象的集合。

举一个简单的例子,我们打算对书籍列表按出版日期排序,最近的排在最前:

book_info = {
  'queryset': Book.objects.order_by('-publication_date'),
}

urlpatterns = patterns('',
  (r'^publishers/$', list_detail.object_list, publisher_info),
  **(r'^books/$', list_detail.object_list, book_info),**
)

这是一个相当简单的例子,但是很说明问题。 当然,你通常还想做比重新排序更多的事。 如果你想要呈现某个特定出版商出版的所有书籍列表,你可以使用同样的技术:

**apress_books = {**
  **'queryset': Book.objects.filter(publisher__name='Apress Publishing'),**
  **'template_name': 'books/apress_list.html'**
**}**

urlpatterns = patterns('',
  (r'^publishers/$', list_detail.object_list, publisher_info),
  **(r'^books/apress/$', list_detail.object_list, apress_books),**
)

注意 在使用一个过滤的 queryset 的同时,我们还使用了一个自定义的模板名称。 如果我们不这么做,通用视图就会用以前的模板,这可能不是我们想要的结果。

同样要注意的是这并不是一个处理出版商相关书籍的最好方法。 如果我们想要添加另一个 出版商页面,我们就得在URL配置中写URL配置,如果有很多的出版商,这个方法就不能 接受了。

相关文章

python实现雨滴下落到地面效果

python实现雨滴下落到地面效果

本文实例为大家分享了python实现雨滴下落到地面效果的具体代码,供大家参考,具体内容如下 本程序在Windows 64位操作系统下,安装的是Anaconda3-4.2.0 impo...

urllib2自定义opener详解

urllib2.urlopen()函数不支持验证、cookie或者其它HTTP高级功能。要支持这些功能,必须使用build_opener()函数创建自定义Opener对象。 复制代码 代...

python实现五子棋游戏

python实现五子棋游戏

本文实例为大家分享了python实现五子棋游戏的具体代码,供大家参考,具体内容如下 话不多说,直接上代码: 全部工程文件,在GitHub:五子棋 效果预览: #!/usr/bin/...

Python文件循环写入行时防止覆盖的解决方法

存在问题: 利用写入代码 with open(r'F:\PythonFiles\PycharmFile\ssq.csv', 'w', encoding='utf-8-sig', n...

根据DataFrame某一列的值来选择具体的某一行方法

根据DataFrame某一列的值来选择具体的某一行方法

原始数据的DF: 此时,我要选择列名isInfected为“手足口病”的样本行: 总结:选择DataFrame里面某一列等于某个值的所有行,用一条命令即可解决即: df.loc[...