无法获取Django os的零售价

2024-05-16 06:47:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经创建了一个母产品泰姬陵茶,其中我创建了它的子产品泰姬陵茶1公斤变种,并给出了价格(不含税)和零售价,你可以在这张图片中看到。你知道吗

enter image description here

但是当我试图访问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')})

任何帮助都会大吃一惊。你知道吗


Tags: infoget产品productselectorpricecurrencydecimal
1条回答
网友
1楼 · 发布于 2024-05-16 06:47:42

这是意料之中的,如果有点混乱的行为。股票记录上的零售价字段在奥斯卡的核心中没有任何地方被使用——它只是作为一个数据字段存在,实际上在奥斯卡1.6中被弃用了。你知道吗

默认策略(我猜您正在使用的策略)只使用不含税的价格,这就是您看到的。你知道吗

如果你想使用零售价,你需要提供你自己的策略类来实现这一点。请记住,这个领域是不赞成虽然,并将从奥斯卡核心删除在未来。你知道吗

另请注意,您发布的代码实际上应该会失败并出现异常,因为这一行:

product = Product.objects.filter(id=11)

product这种情况下将不是一个Product对象,而是一个queryset,它不是Strategy.fetch_for_product()的有效参数。你知道吗

你可能想改做Product.objects.get(id=11)。你知道吗

相关问题 更多 >