请教一个DJango 通用视图中 复写get_queryset的问题


首先谢谢追梦人物的Django教程,收益匪浅。

其次,想请教一个问题 我模仿董伟明的Blog

class CategoriesViews(ListView):
    model = Category
    template_name = 'blog/category.html'
    context_object_name = 'category_list'

这个是查询全部分类的视图 并且在模板中通过反查,显示每个分类下面文章的列表,这个我已经做好了

但是我想通过筛选分类,然后再查询筛选后分类的文章内容

class CategoryViews(CategoriesViews):

   def get_queryset(self):
       return Category.objects.filter(pk=self.kwargs.get('pk'))

但是这样写不对,请问我应该是怎么写呀 想要实现的效果地址

网址

  • 9 条回复 | 2 人参与
  • 如果你的意思是说筛选后获得指定分类的话,你这样写没有问题。哪里不对的?

  • pycharm # 2

    @追梦人物 但是我前台的还是显示的是全部分类的文章,不是我选中的那个分类的文章

  • pycharm # 3

    我前台大概就是这样写的。

    {% for category in category_list %} {{ category.name }} {% for post in category.post_set.all %} {{ post.title }} {{ post.created_time }} {% endfor %} {% endfor %}

  • pycharm # 4

    @追梦人物

    {% for category in category_list %} 
        {{ category.name }}
       {% for post in category.post_set.all %} 
            {{ post.title }}
            {{ post.created_time }}
       {% endfor %} 
    {% endfor %}
    
  • 确保你从 url 捕获了该分类的 pk,你可以用 print 打印出来看一下@pycharm

  • pycharm # 6

    @追梦人物 谢谢您, 我已经找到原因了,我上面的分类导航用的是您教的自定义模板标签的方法,但是我把名字搞重复了,麻烦您了。

    另外博客教程会不会增加 导航 菜单等 选中 就是激活状态的教程呢? 我刚找了一下,用request.path 我现在去试试,如果您出了我想再看看您是怎么实现的。

  • 什么是选中就激活?@pycharm

  • pycharm # 8

    @追梦人物 比如我有一个导航菜单,上面有首页 分类 标签 我点击首页,class就是active 点击分类 分类的class=active

  • @pycharm 嗯,这个如你所说,用 request.path 可以判断。

添加一条新回复
登录 或者 注册 后发表回复