詹戈。Eshop商品目录过滤器

2024-05-06 14:21:26 发布

您现在位置:Python中文网/ 问答频道 /正文

社区!在

我一直致力于为Django上的e-shop开发过滤系统。 一些信息:

  • 小规模(小于2-3k项)
  • Django1.7,postgresql。在
  • 1级分类结构。无嵌套类别

模型骨架:

类别:-用于,你知道,类别

  • 姓名

AttributeGroup:-用于过滤器名称,例如“Color”

  • 姓名

属性:-用于显示过滤值,例如“红色”、“绿色”等

  • 姓名
  • attribute_group-AttributeGroup的外键

项目:

  • 姓名
  • 属性-多对多属性
  • 类别-类别的外键。在

因此,一个项目只能在一个类别中。它可以具有来自相同或不同属性组的多个属性。非常接近或精确的EAV模型,但可以,因为启用了硬缓存。在

实际上,我的问题包括:

  1. 对于这样的规模,使用过滤器的最佳方法是什么? 我在考虑使用ORM过滤器对关系数据库表的实际请求。 对博士后文档进行noSql处理。 将solr与它的facets一起使用。
    1. 当一个属性组内有OR逻辑,但不同属性组之间存在AND逻辑时,如何重新创建逻辑?在

已编辑 让我们坚持最简单的方法-纯Django ORM。在

在category视图中,我得到了category_id和激活的过滤器属性列表。在

所以queryset的项目是这样的: 项目=Item.objects.filter(类别.id=类别编号)

现在我需要对这个items queryset使用filter。属性列表保存所有激活属性的ID。逻辑上很清楚: 对于属性中的属性: 项目=项目.过滤器(属性.id=属性)

但是我怎样才能在不同的属性组之间建立逻辑呢?在


Tags: 项目django方法模型id过滤器列表属性