显示对象子集-libmodbus源码解析

时间:2024-07-14 01:47:23
【文件属性】:

文件名称:显示对象子集-libmodbus源码解析

文件大小:7.37MB

文件格式:PDF

更新时间:2024-07-14 01:47:23

PDF

10.4显示对象子集 现在仔细分析一下我们一直使用的 model属性。这个属性指定视图操作的数据库模型,在操作单个对象或对 象集合的通用视图中都可用。然而,这不是指定视图操作哪些对象的唯一方式,此外还可以使用 queryset属 性指定一组对象: from django.views.generic import DetailView from books.models import Publisher class PublisherDetail(DetailView): context_object_name = 'publisher' queryset = Publisher.objects.all() model = Publisher其实是 queryset = Publisher.objects.all()的简洁形式。然而,使用 queryset可以过滤 对象列表,进一步指定要在视图中查看的对象。下面举个列子。我们可能想按照出版日期排序图书列表,把 最近出版的放在前面: from django.views.generic import ListView from books.models import Book class BookList(ListView): queryset = Book.objects.order_by('-publication_date') context_object_name = 'book_list' 这个示例相当简单,不过却很好地说明了其中的思想。当然,通常你想做的可能不仅仅是重新排序对象。如 果想呈现特定出版社出版的图书列表,也可以使用这个技术: from django.views.generic import ListView from books.models import Book class AcmeBookList(ListView): context_object_name = 'book_list' queryset = Book.objects.filter(publisher__name='Acme Publishing') template_name = 'books/acme_list.html' 注意,除了过滤查询集合之外,我们还自定义了模板名称。如若不然,通用视图会使用显示普通对象列表的 模板,而这可能不是你想要的。 还应注意,这不是显示特定出版社旗下图书的优雅方式。如果想添加关于出版社的其他页面,需要在 URL 配 置中多添加几行代码,而当出版社变多后,这样做也不合理。下一节将解决这个问题。 152 - 第 10 章 通用视图


网友评论