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

发布于 2022-09-02 12:27:31 字数 554 浏览 17 评论 0

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

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() 能查询出单个子分类下的文章,
我想用同样的方式查询父类下所有子类的文章,查询出的结果为空,想请教各位我如何才能查询出父类下所有子类的文章,查询语句该如何写,谢谢各位~!


如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

谎言月老 2022-09-09 12:27:31

已经找到答案:

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

裂开嘴轻声笑有多痛 2022-09-09 12:27:31

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

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;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文