如何在 django-oscar 中添加自定义好处?
How to add custom benefit in django-oscar?
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"
这里我不知道如何注册此自定义权益以在仪表板中使用。?创建优惠时,我需要仪表板下拉菜单中的这项福利。
如有任何帮助,我们将不胜感激。
首先,您需要使用以下命令从 oscar 派生出报价应用程序。
./manage.py oscar_fork_app offer apps/shop
可以在 benefits.py 文件中添加自定义福利。低于福利 class 将给予 "cheapest product from the selected range with 50% off"。
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)
现在,下一步是在从仪表板添加优惠的同时使用此权益。您可以从下拉列表中选择 select 预定义 benefit/incentive。
现在,要在此处使用此权益,您需要从管理面板注册我们的自定义权益。所以,按照下面的截图。
您必须在自定义 class 字段中输入自定义权益 class 的路径。除此之外,将所有内容留空,因为您将在创建报价时从仪表板添加这些信息。
保存后,您将在第一个屏幕截图中显示的下拉列表中获得您的好处。
有效!问如有其他疑问。
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"
这里我不知道如何注册此自定义权益以在仪表板中使用。?创建优惠时,我需要仪表板下拉菜单中的这项福利。
如有任何帮助,我们将不胜感激。
首先,您需要使用以下命令从 oscar 派生出报价应用程序。
./manage.py oscar_fork_app offer apps/shop
可以在 benefits.py 文件中添加自定义福利。低于福利 class 将给予 "cheapest product from the selected range with 50% off"。
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)
现在,下一步是在从仪表板添加优惠的同时使用此权益。您可以从下拉列表中选择 select 预定义 benefit/incentive。
现在,要在此处使用此权益,您需要从管理面板注册我们的自定义权益。所以,按照下面的截图。 您必须在自定义 class 字段中输入自定义权益 class 的路径。除此之外,将所有内容留空,因为您将在创建报价时从仪表板添加这些信息。
保存后,您将在第一个屏幕截图中显示的下拉列表中获得您的好处。
有效!问如有其他疑问。