django 默认发货方式

kgsdhlau  于 2023-01-22  发布在  Go
关注(0)|答案(1)|浏览(185)

我试图写一个航运方法的基础上都按国家和重量也在Django-oscar的基础上。似乎默认的航运方法也必须有这些

from oscar.apps.shipping.methods import Free, FixedPrice, NoShippingRequired

我不需要任何上述,只会提供折扣航运通过折扣。
我怎么写的repository.py,所以我不适用于这些奥斯卡。应用程序。航运。方法导入免费,固定价格,NoShippingRequired
所以我可以直接写我的类Repository(CoreRepository):
没有文字

methods += [NoShippingRequired()]

   methods += [FixedPrice()]

   methods += [Free()]

我写的方法不是基于代码的,而是通过 Jmeter 板中的发货菜单实现的。我按照下面的步骤设置发货。
https://groups.google.com/forum/#!topic/django-oscar/H4tf20ujm8k
测试时,在“送货菜单”页面上,“HandDelivery”和我的基于重量的国家送货方法按钮都显示给客户。这意味着即使客户是国际客户,客户也可以单击“HandDelivery”按钮。我希望在送货方法页面上禁用“HandDelivery”按钮,因此它不是客户可以选择的选项。
另一种选择是附加一条消息到这个按钮,使客户清楚地知道,点击该按钮意味着安排从仓库收集项目在1周内预订。
我如何向客户显示该消息?客户没有进入付款页面。并发送一封电子邮件,使项目可以在7天内收集?像类似的argos,保留,项目,去商店,支付,并收集。所以我可以改变'手送'的描述保留。然后客户不支付,但在收集支付。但如何?

zfycwa2u

zfycwa2u1#

编辑:显然奥斯卡有几种方法来定义航运;更新答案以涵盖 Jmeter 板中定义的方法!

一旦拥有了forked Oscar's shipping app,就可以覆盖存储库类,只返回想要的运费。
如果您已经通过 Jmeter 板定义了基于重量的发货,则可以使用WeightBased模型获取它,并且只返回:
分支应用程序/运输/repository.py:

from oscar.apps.shipping import repository
from oscar.core.loading import get_model
from . import methods

WeightBased = get_model('shipping', 'WeightBased')

class Repository(repository.Repository):
    def get_available_shipping_methods(self, basket, user=None,
            shipping_addr=None, request=None, **kwargs):

        if shipping_addr:
            weightbased_set =  WeightBased.objects.all()

            if weightbased_set:
                return ( list(weightbased_set), )

        # If no address was specified, or weight-based options are
        # not available, return the "Reserve" shipping option
        return ( methods.Reserve(), )

分支应用程序/运输/methods.py:

from oscar.apps.shipping import methods

class Reserve(methods.NoShippingRequired):
    code = 'RESERVE'
    name = 'Reserve'
    description = 'Items will be reserved at the warehouse for 7 days'

延迟付款将涉及分叉payment app,这将是值得自己的问题。
Oscar文档在“How to configure shipping“部分中还提供了一些关于进一步定制运输选项的好信息。

相关问题