Satchmo:指定订单的交货日期/发货日期

时间:2011-09-29 02:18:00

标签: satchmo

我使用Satchmo在电子商务网站上工作。但是,我的商店需要很少的自定义。

  1. 订购产品时,我应该能够指定交货日期(发货日期)。
  2. 产品每天只能交付20次(max_num_delievries)。如果特定产品的特定日期的交货数量超过“max_num_delievries”,则用户在订购产品时应该无法选择该日期。
  3. 有人可以帮助解决这个问题,并指导我如何使用Satchmo实现这一目标吗?

    提前致谢..

1 个答案:

答案 0 :(得分:0)

我会尝试这样的事情:

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-view。

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

此致 安德烈