产品目录:按参数过滤
我需要根据产品的特性来筛选产品。
首先,产品的模型是:
<pre style='color:#000000;background:#ffffff;'><span style='color:#800000; font-weight:bold; '>class</span> Product<span style='color:#808030; '>(</span>models<span style='color:#808030; '>.</span>Model<span style='color:#808030; '>)</span><span style='color:#808030; '>:</span>
name <span style='color:#808030; '>=</span> models<span style='color:#808030; '>.</span>CharField<span style='color:#808030; '>(</span>max_length<span style='color:#808030; '>=</span><span style='color:#008c00; '>255</span><span style='color:#808030; '>,</span> unique<span style='color:#808030; '>=</span><span style='color:#e34adc; '>True</span>'<span style='color:#808030; '>)</span>
然后是特性的模型:
<pre style='color:#000000;background:#ffffff;'><span style='color:#800000; font-weight:bold; '>class</span> Value<span style='color:#808030; '>(</span>models<span style='color:#808030; '>.</span>Model<span style='color:#808030; '>)</span><span style='color:#808030; '>:</span>
value <span style='color:#808030; '>=</span> models<span style='color:#808030; '>.</span>CharField<span style='color:#808030; '>(</span>max_length<span style='color:#808030; '>=</span><span style='color:#008c00; '>50</span><span style='color:#808030; '>)</span>
<span style='color:#800000; font-weight:bold; '>class</span> FeatureName<span style='color:#808030; '>(</span>models<span style='color:#808030; '>.</span>Model<span style='color:#808030; '>)</span><span style='color:#808030; '>:</span>
name <span style='color:#808030; '>=</span> models<span style='color:#808030; '>.</span>CharField<span style='color:#808030; '>(</span>max_length<span style='color:#808030; '>=</span><span style='color:#008c00; '>50</span><span style='color:#808030; '>)</span>
<span style='color:#800000; font-weight:bold; '>class</span> Feature<span style='color:#808030; '>(</span>models<span style='color:#808030; '>.</span>Model<span style='color:#808030; '>)</span><span style='color:#808030; '>:</span>
name <span style='color:#808030; '>=</span> models<span style='color:#808030; '>.</span>ForeignKey<span style='color:#808030; '>(</span>FeatureName<span style='color:#808030; '>)</span>
value <span style='color:#808030; '>=</span> models<span style='color:#808030; '>.</span>ForeignKey<span style='color:#808030; '>(</span>Value<span style='color:#808030; '>)</span>
item <span style='color:#808030; '>=</span> models<span style='color:#808030; '>.</span>ForeignKey<span style='color:#808030; '>(</span>Product<span style='color:#808030; '>)</span>
为了制作一个过滤的模板表单,我需要获取所有可能的特性名称和这些特性的值。
比如说:
颜色:红色、白色、蓝色
尺码:1、2、3
我希望有人能理解我的意思,告诉我怎么做才能实现这个功能。谢谢!:)
1 个回答
2
首先,列出这个产品的所有功能:
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]
这样你就能得到一个字典,把所有的名称和它们对应的值连接起来。