【问题标题】:Free shipping in satchmo萨奇莫免费送货
【发布时间】:2011-10-04 17:02:44
【问题描述】:

我需要为 satchmo 中的加拿大邮政模块添加“如果购买超过 100 美元则免运费”功能。这可以开箱即用,还是我需要制作一个新的运输模块?

【问题讨论】:

  • 什么.. 为什么这与编程无关?你知道什么是 satchmo 和 django 吗?
  • 你的代码现在是什么样子的?
  • 我最终连接到了一个 satchmo 信号并在订单中添加了一个自定义创建的折扣代码。
  • 但是...当我问这个问题时,没有 no 代码.. 除非您希望我粘贴并评论我想要的所有相关 satchmo 代码到目前为止,为了弄清楚如何做到这一点,这不是一个好主意

标签: django shipping satchmo


【解决方案1】:

好的,为此我做了以下操作:

from product.models import Discount

class AutoDiscount(Discount):
    pass

这让我可以在管理区域定义不同的折扣,然后这样做:

def check_automatic_discounts(sender, form=None, **kwargs):
    """
    """
    if sender in (CreditPayShipForm, SimplePayShipForm,
                  PaymentContactInfoForm):
        # I probably need to sort these in some specific order
        for discount in AutoDiscount.objects.all():
            if discount.isValid(cart=form.cart,)[0]:
                form.order.discount_code = discount.code
                form.order.save()
                return

signals.form_postsave.connect(check_automatic_discounts)

如果我需要更详细地控制应用哪些折扣,我可以将字段添加到 AutoDiscount 模型并覆盖 isValid 方法

【讨论】:

  • 这不会覆盖用户实际输入的任何折扣代码吗?另外,我不知道自动折扣代码最终是否会显示在电子邮件等中,然后可以被用户重复用于其他订单。
  • 好点。老实说,我也不知道。这段代码已经三年多了,我不记得我是否以及如何测试这些东西
  • 我明白了 :‑) 最后我没有使用折扣对象,而是将自定义代码放在托运人对象的成本方法中,以便在需要时返回 0。
猜你喜欢
  • 2010-10-27
  • 1970-01-01
  • 2013-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-26
  • 2014-03-03
相关资源
最近更新 更多