Django-oscar提供multibuy
福利类型。
class MultibuyDiscountBenefit(Benefit):
_description = _("Cheapest product from %(range)s is free")
现在,我可以添加Buy 1 get 1 free
优惠。
我这里有一点定制要求。我想添加'Buy 1 get 50% off on second'
优惠。为此,我需要添加自定义权益。
我检查docs是否添加了自定义权益。
按照医生说的那样...... A custom benefit can be used by creating a benefit class and registering it so it is available to be used.
。
关注文档后,我为此创建了自定义权益。
class MultiBuyCustom(Benefit):
class Meta:
proxy = True
@property
def description(self):
"""
Describe what the benefit does.
This is used in the dashboard when selecting benefits for offers.
"""
return "But 1 and get 50% off"
在这里,我不知道如何将此自定义权益注册到仪表板中使用。在创建优惠时,我在仪表板的下拉列表中需要此优势。
非常感谢任何帮助。
答案 0 :(得分:0)
首先,您需要使用以下命令从奥斯卡提供优惠应用程序。
./manage.py oscar_fork_app offer apps/shop
可以在benefits.py文件中添加自定义权益。以下福利等级将给出“所选范围内最便宜的产品,50%折扣”。
class NewCustomBenefit(benefits.Benefit):
description = "Cheapest product from range is 50% off"
@property
def name(self):
return self.description
class Meta:
app_label = 'offer'
proxy = True
verbose_name = _("Buy 1 get 50% off")
verbose_name_plural = _("Buy 1 get 50% off")
def apply(self, basket, condition, offer):
line_tuples = self.get_applicable_lines(offer, basket, range=condition.range)
if not line_tuples:
return results.ZERO_DISCOUNT
# Cheapest line gives 50% off on second product
discount, line = line_tuples[0]
discount /= 2
apply_discount(line, discount, 1)
affected_lines = [(line, discount, 1)]
condition.consume_items(offer, basket, affected_lines)
return results.BasketDiscount(discount)
def __unicode__(self):
return unicode(self.name)
现在,下一步是在从仪表板添加商品时获得此优势。您可以选择从下拉列表中选择预定义的福利/激励。
现在,要在此处获得此优势,您需要从管理面板注册我们的自定义权益。所以,请按照下面的截图。 您必须在自定义类字段中输入自定义福利类的路径。除此之外,将所有内容保留为空白,因为您在创建商品时会从信息中心添加这些信息。
保存完毕后,您可以在下拉菜单中获得优惠,如第一张屏幕截图所示。
有效。询问是否有任何其他疑问。