【发布时间】:2017-08-28 10:51:15
【问题描述】:
我正在尝试编写一个查询来检索至少附加了一个post 的所有类别。换句话说,我想“排除”任何没有帖子的类别。
这些是我为Category 和Post 设计的模型:
class Category(models.Model):
title = models.CharField(max_length=250)
slug = models.SlugField(max_length=250, unique=True)
class Post(models.Model):
title = models.CharField(max_length=250)
slug = models.SlugField(max_length=250, unique=True)
body = models.TextField()
category = models.ForeignKey(Category, blank=True, default="")
这是我在查询中使用的代码,目前它会获取所有类别,即使没有“附加”帖子:
categories = Category.objects.all()
我想要的是这样的:
categories = Category.objects.filter(
# Only ones that have at least one Post that has it's 'category' field set to it.
)
我搜索了文档和其他任何地方,但找不到解决方案。
请告诉我如何做到这一点。
【问题讨论】:
-
Post模型有一个指向Topic模型的外键,而您称它为categories。我不确定我是否理解这种关系如何与Category模型一起使用。 -
@AKS 很抱歉造成混乱。我在问题中用 Category 替换了 Topic,认为这样可以更清楚地说明我想要实现的目标。我现在已经解决了,谢谢。
-
请检查答案。