在我的 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
这样,你可能要应对这种情况。
添加回答
举报
0/150
提交
取消