这个项目正在用 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=...) 然后,您可以检索与所选类别的后代相关的所有产品。
