这个项目是用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
问题是,用户应该从类别中的任何级别访问这些产品。 例如,
任何想法应该如何构建模型类,以及我们应该如何查询以便实现所需的结果。
任何建议都会有所帮助。如果还提供代码将会很好。
答案 0 :(得分:1)
如何考虑实施2-interval graphs?
答案 1 :(得分:1)
您可以使用django-mptt之类的东西将分层数据(您的Categories模型)存储在数据库中。它提供additional methods来检索某些元素的所有后代。
并使用
Product.objects.filter(category__in=...)
然后,您可以检索与所选类别的后代相关的所有产品。
答案 2 :(得分:1)
我认为你的模型看起来很好,有你在那里的领域;对于你可以做的查询(它没有经过测试):
list_categories = []
head_category = Category.objects.filter(parent_category=request.GET['category'])
while head_category:
# Transform the Queryset to a list.
head_category = [category.category for category in head_category]
# Put all the new categories in the list
for category in head_category:
list_categories.append(category)
# Get child categories of the current categories.
child_category = Category.objects.filter(parent_category__in=head_category)
head_category = child_category
# Get all product from those category list.
Product.objects.filter(category__parent_category__in=list_categories)
答案 3 :(得分:0)
对于分层数据,您可能希望开始使用django-treebeard。