【问题标题】:Satchmo: Specify delivery date/shipping date for an orderSatchmo:指定订单的交货日期/发货日期
【发布时间】:2011-09-29 02:17:59
【问题描述】:

我正在使用 Satchmo 开发电子商务网站。但是,我的商店几乎不需要自定义。

  1. 在订购产品时,我应该能够指定交货日期(发货日期)。
  2. 一个产品每天只能进行 20 (max_num_delievries) 次交付。如果特定产品在特定日期的交货次数超过“max_num_delievries”,用户在订购产品时应该无法选择该日期。

有人可以帮忙并指导我如何使用 Satchmo 实现这一目标吗?

提前谢谢..

【问题讨论】:

    标签: satchmo


    【解决方案1】:

    我会尝试这样的:

    1) 使用“DeliveryDate”左右的模型创建一个本地应用程序(例如delivery_date)。例如 localsite/delivery_date/models.py:

    class DeliveryDate(models.Model):
        product = models.ForeignKey(Product)
        date = models.DateField()
        order = models.ManyToManyField(Order)
    
        class Meta:
            unique_together = ("product", "date")
    

    2) 最多 20 个现有订单的验证...嗯,好问题,也许最好的办法是在表单上进行?覆盖 clean 方法并检查此交货日期是否已经与 20 个订单相关联...可能类似于 localsite/delivery_date/forms.py

    class DeliveryDateForm(forms.ModelForm):
        class Meta:
            model = DeliveryDate
    
        def clean(self):
            super(DeliveryDateForm, self).clean()
            ... check here the order_set count
    

    ...但也许表单不是执行此操作的最佳位置。

    您可能还想自己隐藏和自动设置产品和订单的初始值,而用户只需要选择一个日期。

    3) 关于 satchmo... 我会在产品添加到购物车后使用信号做出反应(在这种情况下有一个信号),并添加一个监听器,将用户重定向到他可以看到的视图选择此产品的日期。看看这里带有信号“cart_add_view”的例子:http://www.facebook.com/note.php?note_id=101466134049

    也许 ajax 在这里是一个不错的选择。在您的页面中有一个隐藏的容器......在将产品添加到购物车后显示(仅当产品还没有与此订单/产品关联的 DeliveryDate 时),并要求用户选择一个日期。

    这整件事都在监听器上:检查产品是否需要交货日期,如果需要,发送一个 ajax 响应以弹出窗口,并将表单与初始产品一起放入 repsonse-context并为隐藏字段排序。

    要保存交货日期,您将需要另一个 ajax 视图。

    嗯,这只是一个想法,我将如何尝试这样做;-) 当然,它可能需要在这里和那里进行调整。但希望它能进一步帮助您。

    问候, 安德烈亚

    【讨论】:

    • 首先,感谢您的 cmets。我将在我的程序中检查这些输入,看看是否有帮助。
    猜你喜欢
    • 2015-09-26
    • 1970-01-01
    • 2022-10-31
    • 1970-01-01
    • 1970-01-01
    • 2012-05-13
    • 1970-01-01
    • 2019-07-19
    • 2020-08-25
    相关资源
    最近更新 更多