Satchmo: укажите дату доставки / дату доставки для заказа - PullRequest
0 голосов
/ 29 сентября 2011

Я работаю над сайтом электронной коммерции, используя Satchmo. Однако для моего магазина требуется немного настроек.

  1. При заказе товара я могу указать дату доставки (дату доставки).
  2. Для продукта возможна только 20 (max_num_delievries) поставок в день. Если количество доставок на конкретную дату для определенного продукта превышает «max_num_delievries», пользователь не должен иметь возможность выбрать эту дату при заказе продукта.

Может кто-нибудь помочь в этом и подсказать, как этого добиться с помощью Satchmo?

Заранее спасибо ..

1 Ответ

0 голосов
/ 05 октября 2011

Я бы попробовал что-то вроде этого:

1) создать локальное приложение (например, delivery_date) с такой моделью, как «DeliveryDate» или около того. Например, 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 форму с исходным продуктом. и закажите скрытые поля.

А чтобы сохранить дату доставки, вам понадобится другой вид ajax.

Ну, это просто идея, как бы я попытался это сделать ;-) Конечно, здесь и там, вероятно, понадобятся корректировки. Но, надеюсь, это поможет вам в дальнейшем.

С уважением, Andrea

...