Python 访问django oscar产品属性
我想访问产品属性的值。我已经用codePython 访问django oscar产品属性,python,django,django-oscar,Python,Django,Django Oscar,我想访问产品属性的值。我已经用codeweight和typefloat定义了一个产品属性。在我看来,我试图访问它,如下所示: def red(request): basket = request.basket weight_total = 0 for line in basket.all_lines(): weight = line.product.attributes.get(code = 'weight') weight_total +
weight
和typefloat
定义了一个产品属性。在我看来,我试图访问它,如下所示:
def red(request):
basket = request.basket
weight_total = 0
for line in basket.all_lines():
weight = line.product.attributes.get(code = 'weight')
weight_total += weight.productattributevalue
它不工作,并给出错误:
'ProductAttribute' object has no attribute 'productattributevalue'
我试着研究奥斯卡的模型,但找不到解决办法。请提供帮助。我建议复制Django Oscar shipping/scales.py Scale类 在这里,他们使用产品的'attribute\u values'属性的'value'属性
try:
attr_val = product.attribute_values.get( # Using 'attribute_values'
attribute__code=self.attribute) # Use your own code of 'weight'
except ObjectDoesNotExist:
if self.default_weight is None: # You can set a default weight.
raise ValueError("No attribute %s found for product %s"
% (self.attribute, product))
weight = self.default_weight
else:
weight = attr_val.value # << HERE. using 'value' property
试试看:
attr_val=product.attribute_values.get(#使用'attribute_values'
属性(代码=self.attribute)#使用您自己的“重量”代码
除ObjectDoesNotExist外:
如果self.default_weight为None:#您可以设置默认权重。
raise VALUERROR(“找不到产品%s的属性%s)”
%(自我属性、产品)
重量=自身默认重量
其他:
weight=attr_val.value#要通过代码获取或设置属性,只需执行以下操作:
product.attr.code
例如,如果属性的代码为“权重”:
我在oscar.apps.catalog.product_attributes
(django oscar 1.4)的代码中找到了这个例子,它可以在python和模板中工作。注意,您需要调用product.attr.save()
,以使分配持久化。
product.attr.weight = 125