为了账号安全,请及时绑定邮箱和手机立即绑定

Django 根据模板名称过滤查询集

Django 根据模板名称过滤查询集

小唯快跑啊 2021-12-08 16:30:12
在我的 Django 应用程序中,我有 2 个模型。一种叫做 Post,一种叫做 Categories。当用户单击某个类别时,我只希望该类别中的帖子出现在类别详细信息视图中。例如,如果用户单击医疗类别,我只希望显示医疗类别中的帖子。楷模:class Category(models.Model):    title = models.CharField(max_length=200)    colorcode = models.CharField(max_length=20, blank=True, null=True)    description = models.TextField()    image = models.ImageField(blank=True, null=True)    slug = models.SlugField(unique=True)class Post(models.Model):    author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)    title = models.CharField(max_length=200)    text = models.TextField()    sub_description = models.TextField(blank=True, null=True)    created_date = models.DateTimeField(default=timezone.now)    published_date = models.DateTimeField(blank=True, null=True)    category = models.ForeignKey(Category, on_delete=models.CASCADE, blank=True, null=True)    image = models.ImageField(blank=True, null=True)    live = models.BooleanField(default=False)    slug = models.SlugField(unique=True)意见:class CategoryDetailView(DetailView):model = Categorydef get_context_data(self, **kwargs):    context = super(CategoryDetailView, self).get_context_data(**kwargs)    context['category_posts'] = Post.objects.filter(live=True)    return context模板:{% for post in category_posts %}    <div class="post">        <div class="post-title">            {{ post.title }}        </div>        <div class="post-author">            {{ post.author }}        </div>    </div>{% endfor %}
查看完整描述

1 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞

在 a 中DetailView,您可以Category通过self.object.

所以在你的get_context_data方法中你可以这样做:

context['category_posts'] = Post.objects.filter(live=True, category=self.object)

请注意,self.object可能是None这样,你可能要应对这种情况。


查看完整回答
反对 回复 2021-12-08
  • 1 回答
  • 0 关注
  • 193 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信