我已经创建了一个母产品泰姬陵茶,其中我创建了它的子产品泰姬陵茶1公斤变种,并给出了价格(不含税)和零售价,你可以在这张图片中看到。你知道吗
但是当我试图访问price对象时,我无法在其中获得零售价格属性。 这是我的示例代码:
from oscar.core.loading import get_class, get_model
from oscar.apps.partner.strategy import Selector
Product = get_model('catalogue', 'Product')
product = Product.objects.filter(id=11).first()
strategy = Selector().strategy()
info = strategy.fetch_for_product(product)
print(info.price)
输出:
FixedPrice({'currency': 'INR', 'excl_tax': Decimal('400.00'), 'tax': Decimal('0.00')})
以下是我的测试代码及其输出:
>>> strategy = Selector().strategy()
>>> info = strategy.fetch_for_product(product)
>>> info
PurchaseInfo(price=FixedPrice({'currency': 'INR', 'excl_tax': Decimal('400.00'), 'tax': Decimal('0.00')}), availability=<oscar.apps.partner.availability.StockRequired object at 0x7f2db2324e80>, stockrecord=<StockRecord: Partner: Aapnik, product: Taj mahal 1 kg (xyz)>)
>>> info.price
FixedPrice({'currency': 'INR', 'excl_tax': Decimal('400.00'), 'tax': Decimal('0.00')})
任何帮助都会大吃一惊。你知道吗
这是意料之中的,如果有点混乱的行为。股票记录上的零售价字段在奥斯卡的核心中没有任何地方被使用——它只是作为一个数据字段存在,实际上在奥斯卡1.6中被弃用了。你知道吗
默认策略(我猜您正在使用的策略)只使用不含税的价格,这就是您看到的。你知道吗
如果你想使用零售价,你需要提供你自己的策略类来实现这一点。请记住,这个领域是不赞成虽然,并将从奥斯卡核心删除在未来。你知道吗
另请注意,您发布的代码实际上应该会失败并出现异常,因为这一行:
product
这种情况下将不是一个Product
对象,而是一个queryset,它不是Strategy.fetch_for_product()
的有效参数。你知道吗你可能想改做
Product.objects.get(id=11)
。你知道吗相关问题 更多 >
编程相关推荐