Python 访问django oscar产品属性

Python 访问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 +

我想访问产品属性的值。我已经用code
weight
和type
float
定义了一个产品属性。在我看来,我试图访问它,如下所示:

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