关于python:产品目录:按参数过滤

Products catalogue: filter by parameters

我需要按功能制作过滤产品。

所以,产品型号:

1
2
3
4
</p>

class Product(models.Model):
    name = models.CharField(max_length=255, unique=True')

以及功能模型:

1
2
3
4
5
6
7
8
9
10
11
12
</p>

class Value(models.Model):
    value = models.CharField(max_length=50)

class FeatureName(models.Model):
    name = models.CharField(max_length=50)

class Feature(models.Model):
    name = models.ForeignKey(FeatureName)
    value = models.ForeignKey(Value)
    item = models.ForeignKey(Product)

要标记一个过滤模板,我需要获取所有可能的特征和值的名称??具有这种特性。

这样地:

颜色:红、白、蓝尺寸:1, 2, 3

希望有人能理解我,告诉我怎样做才能巧妙地实现一个功能。谢谢)


首先列出给定产品的所有功能:

1
2
product = Product.objects.get(pk=given_pk)
features = product.feature_set.all().select_related()

现在将您的特性直接分组到python中。

1
2
3
4
features_dict = {}
for feature in features:
    values = features_dict.get(feature.name.name, [])
    features_dict[feature.name.name] = values + [feature.value.value]

这将使您能够将所有名称与它的现有值进行dict链接。