首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在django-oscar中增加定制福利?

如何在django-oscar中增加定制福利?
EN

Stack Overflow用户
提问于 2017-03-14 07:00:55
回答 2查看 808关注 0票数 0

multibuy提供multibuy福利类型。

代码语言:javascript
复制
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.

在文档之后,我为此创建了我的自定义福利。

代码语言:javascript
复制
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"

在这里,我不知道如何在仪表板上注册这个定制的好处。?我需要这个好处在下拉式在仪表板,而创造的优惠。

任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-03 04:55:03

首先,您需要用下面的命令从oscar那里分送这个应用程序。

代码语言:javascript
复制
./manage.py oscar_fork_app offer apps/shop

可以在benefits.py文件中添加自定义好处。以下优惠类别将给予“最便宜的产品,从选定的范围内,50%的折扣”。

代码语言:javascript
复制
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)

现在,下一步是在添加来自仪表板的报价的同时获得这一好处。您可以选择从下拉列表中选择预定义的福利/奖励。

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

一旦你保存了它,你就会在下拉列表中受益,如第一张截图所示。

起作用了!询问是否有任何其他查询。

票数 0
EN

Stack Overflow用户

发布于 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条件。

(回答为什么我的自定义效益没有显示出来)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42779583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档