Cod*_*mon 4 python django django-oscar
试图访问产品的价格,使用文档.但是获得属性错误.
>>> from oscar.apps.partner import strategy, prices
>>> from oscar.apps.catalogue.models import *
>>> product = Product.objects.get(pk=1)
>>> info = strategy.fetch_for_product(product)
Traceback (most recent call last):
File "<console>", line 1, in <module>
AttributeError: 'module' object has no attribute 'fetch_for_product'
Run Code Online (Sandbox Code Playgroud)
要查看策略的所有属性,我会这样做
>>> dir(strategy)
>>> ['Base', 'D', 'Default', 'DeferredTax', 'FixedRateTax', 'NoTax', 'PurchaseInfo',
'Selector', 'StockRequired', 'Structured', 'UK', 'US', 'UseFirstStockRecord',
'__builtins__', '__doc__', '__file__', '__name__',
'__package__', 'availability', 'namedtuple', 'prices']
Run Code Online (Sandbox Code Playgroud)
所以fetch_for_product不属于策略属性.现在我如何获取特定产品的价格?
您在上面导入的是策略模块.你想要的是策略对象.获取策略的最简单方法是向策略选择器询问:
from oscar.apps.partner.strategy import Selector
selector = Selector()
strategy = selector.strategy(request=..., user=...)
purchase_info = strategy.fetch_for_product(product=...)
price = purchase_info.price
Run Code Online (Sandbox Code Playgroud)
选择器很有用,因为它允许您根据上下文使用不同的策略(特定用户,来自特定国家/地区的请求等).在您自己的商店中,您将Selector使用自己的实现覆盖它,默认情况下它将返回Default策略.
有关更多信息,请参阅文档.
| 归档时间: |
|
| 查看次数: |
1062 次 |
| 最近记录: |