【发布时间】:2015-11-15 01:26:43
【问题描述】:
我有一个产品:
class Product(models.Model):
...
本产品的特点,带fk到动态属性:
class ProductFeatures(models.Model):
product = models.ForeignKey('Product')
features_category = models.ForeignKey('FeaturesCategory')
value = models.ForeignKey('Features')
动态属性名称模型:
class FeaturesCategory(models.Model):
title = models.CharField(max_length=255, verbose_name=_(u'Название'))
每个属性的值:
class Features(models.Model):
category = models.ForeignKey('FeaturesCategory')
value = models.CharField(max_length=255, verbose_name=_(u'Значение'))
所有这些工作的示例:
我们创建了 FeaturesCategory 对象 - “Color”,为其添加了一些值:“Red”、“Green”、“Blue”。并添加了另一个 FeaturesCategory 对象 - “Count”,其值为:“1”、“2”、“3”
我们添加到产品中的所有这些,例如:
颜色 - 红色 计数 - 3
麻烦,请问如何过滤这个产品?
for param in self.request.GET:
if not param in ['pangination', 'view', 'order', 'page']:
name, value = param.split('_')
filters.append(
Q(productfeatures__features_category__title=name,
productfeatures__features_category__features__value=value)
)
如果我们有两个“参数”来过滤它就不起作用
【问题讨论】:
-
您对
request.GET的期望值是什么? -
我不确定您使用的是
Q对。尝试不使用productfeatures__features_category__title=name, productfeatures__features_category__features__value=value。 -
我的问题是我生成这样的查询:
filter(Q(attr='Color', value='Red'), Q(attr='Count', value='5'))如果我选择了两个过滤器...