【问题标题】:How to add custom benefit in django-oscar?如何在 django-oscar 中添加自定义福利?
【发布时间】:2017-03-14 07:00:55
【问题描述】:

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"

这里我不知道如何注册这个自定义好处以在仪表板中使用。?创建优惠时,我需要在仪表板的下拉列表中获得此好处。

任何帮助将不胜感激。

【问题讨论】:

  • 经过一番研究,我得到了答案。我马上贴一个。

标签: django django-oscar


【解决方案1】:

首先,您需要使用以下命令从 oscar 分叉优惠应用程序。

./manage.py oscar_fork_app offer apps/shop

可以在好处.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)

现在,下一步是在从仪表板添加优惠时使用此优惠。您可以从下拉列表中选择预定义的福利/奖励。

现在,要在此处使用此福利,您需要从管理面板注册我们的自定义福利。所以,按照下面的截图。 您必须在自定义类字段中输入自定义福利类的路径。除此之外,将所有内容保持空白,因为您将在创建报价时从仪表板添加这些信息。

保存后,您将在下拉菜单中获得好处,如第一个屏幕截图所示。

它有效。!询问是否有任何其他疑问。

【讨论】:

  • 创建自定义福利后,我运行python manage.py makemigrations && python manage.py migrate,但我看不到自定义福利。有什么建议吗?
猜你喜欢
  • 1970-01-01
  • 2021-09-03
  • 1970-01-01
  • 1970-01-01
  • 2020-09-10
  • 1970-01-01
  • 1970-01-01
  • 2015-07-12
  • 1970-01-01
相关资源
最近更新 更多