multibuy提供multibuy福利类型。
class MultibuyDiscountBenefit(Benefit):
_description = _("Cheapest product from %(range)s is free")现在,我可以添加Buy 1 get 1 free提供的这个好处。
我这里有一些定制的要求。我想增加'Buy 1 get 50% off on second'的报价。要做到这一点,我需要添加自定义好处。
我检查了文档以添加自定义好处。
正如医生所说.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"在这里,我不知道如何在仪表板上注册这个定制的好处。?我需要这个好处在下拉式在仪表板,而创造的优惠。
任何帮助都将不胜感激。
发布于 2017-06-03 04:55:03
首先,您需要用下面的命令从oscar那里分送这个应用程序。
./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)现在,下一步是在添加来自仪表板的报价的同时获得这一好处。您可以选择从下拉列表中选择预定义的福利/奖励。

现在,要在这里获得这个好处,您需要从管理面板注册我们的自定义好处。所以,按照下面的截图。您必须在自定义类字段中输入自定义福利类的路径。除此之外,保留所有空白,因为您将添加这些信息从仪表板,同时创造报价。
一旦你保存了它,你就会在下拉列表中受益,如第一张截图所示。

起作用了!询问是否有任何其他查询。
发布于 2022-10-19 08:11:40
我知道一些旧的线程,但您需要使用create_benefit (benefit.html)
...your代码
从oscar.apps.offer.custom导入create_benefit
create_benefit(your_benefit_custom_class)
...more代码
(不需要在views.py,models.py ..etc中)
小心!
如果代码中的某个地方再次调用它,它将重新初始化它,并且您将获得相同的自定义好处,因此可以从shell调用它,或者创建一个要调用的If条件。
(回答为什么我的自定义效益没有显示出来)
https://stackoverflow.com/questions/42779583
复制相似问题