Skip to main content
 首页 » 编程设计

python之在 Django 框架中获取嵌套的子记录

2024年09月03日21telwanggs

这个项目正在用 python 和 django 开发。

根据我的要求,我想查询类别中的所有产品,最多两到三个级别...

我的实体结构如下。

Category: 
- Name 
- ParentCategory 
 
Product: 
- ID 
- Name 
- Category 

这是我要查询的示例记录。

Category: 
 - Name: Apparel | Parent:None 
 - Name: Shirt | Parent: Apparel 
 - Name: TShirts | Parent: Apparel 
 - Name: MaleTShirts | Parent:TShirts 
 - Name: FemaleTShirts | Parent: TShirts 
 - Name:Electornics | Parent:None 
 
Product: 
 - ID:1 | Name:ABC | Category:MaleTShirt 
 - ID:2 | Name:XYZ | Category:FemaleTShirt 
 - ID:3 | Name:JKL | Category:Shirt 

问题是,用户应该从类别中的任何级别访问这些产品。 例如,

  • 当用户选择服装类别时,产品 ABC、XYZ 和 JKL 应出现在结果集中。
  • 当用户选择类别 T 恤时,产品 ABC 和 XYZ 应出现在结果集中。
  • 当用户选择类别 MaleTShirts 时,只有 ABC 应该出现在结果集中。
  • 当用户选择类别 FemaleTShirts 时,只有 XYZ 应该出现在结果集中。

知道模型类应该如何构建,以及我们应该如何查询才能达到预期的结果。

任何建议都会有所帮助。如果也提供代码就好了。

请您参考如下方法:

您可以使用类似 django-mptt 的东西在数据库中存储分层数据(您的类别模型)。它提供了additional methods检索某个元素的所有后代。 并使用 Product.objects.filter(category__in=...) 然后,您可以检索与所选类别的后代相关的所有产品。