首页 文章

产品目录:按参数筛选

提问于
浏览
0

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

那么,产品型号:

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

和功能模型:

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 回答

  • 1

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

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

    现在直接在Python中分组您的功能 .

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

    这将为您提供将所有名称与其现有值相关联的字典 .

相关问题