如何查询出所有子分类下的文章

我博客中文章和分类是一对多关系,
我的模型代码:

class Category(models.Model):
......
parent =models.ForeignKey("self", blank=True, null=True,related_name="children")
......

class Article(models.Model):
....
category = models.ForeignKey(Category, blank=True, null=True, verbose_name='分类')
......

我的分类结构:

-分类
----子分类1
----子分类2

在dbshell中测试通过 temp=Category.objects.get(name=“子分类”).article_set.all() 能查询出单个子分类下的文章,
我想用同样的方式查询父类下所有子类的文章,查询出的结果为空,想请教各位我如何才能查询出父类下所有子类的文章,查询语句该如何写,谢谢各位~!


阅读 4.3k
3 个回答

已经找到答案:

c = Category.objects.get(**kwargs) 这样查出来之后,用 c.parentc.children.all() 可以获取到 父栏目和所有子栏目。
获取栏目的文章可以用 Article.objects.filter(category__in=c.children.all())

楼主,分类与子分类的关系,如下:

create table `category`(
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `name` varchar(12) NOT NULL DEFAULT '',   -- 类目名
    `pid` int(11) NOT NULL DEFAULT '0',       -- 父类目id,如果为父类,则为0,否则子类要指向父亲类id
)

问题这样解决,如果已知父类id, 查询该父类下的子类为:

SELECT * FROM `category` WHERE pid=父类id;
推荐问题