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

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

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.1k
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;
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏