Usage

После установки django-qshop должен заработать сразу после создания таблиц. Но это будет базовая конфигурация.

Темплейты, которые идут в пакете, ужасны и рассчитаны на то, что они будут переделаны. Список темплейтов

Скорее всего вам надо будет дополнить модель продукта какими-то полями, добавить возможность пользователю указать имя своего домашнего любимца при заказе, а так же сделать, чтобы при выборе вариации продукта к ней была присоеденена картинка. И это можно сделать с помощью расширяемые классы!

После этого, если вы хотите использовать фильтры в категориях и таблицы свойств продукта, то для каждого типа продукта вам надо будет создать “Parameters Set”, в котором описать все поля этого типа продукта и указать создавать ли по ним фильтр в категории.

При добавлении продукта нужно будет выбрать тип этого продукта, и после сохранения появится список свойств, который надо будет заполнить.

Так же каждый продукт может иметь несколько вариаций, например одна и та же майка может быть разных размеров, и каждый размер будет отличаться по цене.

У каждого продукта есть одно главное изображение, которое показывается в списке продуктов, а так же есть дополнительные, которые показываются только на странице самого продукта.

И в конце концов, надо привязать продукт к нужным категориям.

Так же вам скорее всего стоит настроить заказ товара

Список темплейтов

  • qshop/
    • cart/
      • _cart_as_table.html - вывод корзины, как таблицы. Используется при посылании емалиа и при просмотре заказа.
      • cart.html - корзина.
      • order.html - оформление заказа.
      • order_success.html - сообщение об успешном заказе.
    • mails/
      • order_sended.html - емаил сообщение о заказе.
    • categorypage.html - список категорий продуктов.

    • productpage.html - страница продукта.

    • productspage.html - категория продуктов.

    • shoppage.html - необязательный шаблон, который используют все остальные шаблоны.

Расширяемые классы

В случае, если вам нужно добавить к продукту дополнительное поле, то можно воспользоваться абстрактным классом:

qshop_custom/models.py

from django.db import models
from qshop.models import ProductAbstract


class ProductCustom(ProductAbstract):
    my_field = models.BooleanField()

    class Meta:
        abstract = True

settings.py

QSHOP_PRODUCT_CLASS = 'qshop_custom.models.ProductCustom'

Принцип работы:

  • Создать свой класс, который расширяет нужный абстрактный класс qshop;
  • Сделать его абстрактным;
  • Указать в settings.py, что теперь надо использовать ваш класс.

Список расширяемых классов

  • PRODUCT_CLASS - класс продукта
  • VARIATION_VALUE_CLASS - класс значения вариации продукта, если вы хотите привязать поле к каждому значению вариации
  • VARIATION_CLASS - класс вариации, если вы хотите привязать поле к каждой вариации для продукта
  • PRODUCT_IMAGE_CLASS - класс изображений продукта, если вы хотите привязать название изображения
  • PARAMETERS_SET_CLASS - класс списка параметров продукта, если вы хотите привязать поле ко всем продуктам одного типа
  • PARAMETER_CLASS - класс параметров, если вы хотите привязать поле для каждого параметра
  • PARAMETER_VALUE_CLASS - класс значений параметров, если вы хотите привязать поле для каждого значения параметра
  • PRODUCT_TO_PARAMETER_CLASS - класс привязки параметров к продуктам, если вы хотите привязать значение к каждому параметру продукта

и

  • CART_ORDER_CLASS - класс заказа, если вы хотите добавить возможность пользователю указать имя своего домашнего любимца при заказе

Заказ товара

Вы можете создать класс, который добавит нужные поля в заказ:

qshop_custom/models.py

from django.db import models
from qshop.cart.models import OrderAbstract


class OrderCustom(OrderAbstract):
    my_field = models.BooleanField()

    class Meta:
        abstract = True

settings.py

CART_ORDER_CLASS = 'qshop_custom.cart.models.OrderCustom'

Так же вы можете захотеть изменить процесс покупки (чаще всего для получения оплаты). Добавте к OrderCustom:

def get_redirect(self):
    return reverse(<my view>)

И тогда после валидации и сохранения заказа клиент будет перенаправлен на вашу страницу, на которой вы можете сделать с ним что захотите.

Например так:

  • Добавить в OrderCustom поле payed = models.BooleanField(default=False)
  • В “def redirect(self)” редиректить пользователя на страницу оплаты paypal
  • После возврата пользователем на сайт ставить у Order флаг payed=True

Естественно не стоит забывать о логгировании всех оплат и т.д.

Скорее всего вам захочется изменить форму заказа в админке. Это можно сделать с помощью unregister.

from django.contrib import admin
from qshop.cart.models import Order
from qshop.cart.admin import OrderAdmin as OrderAdminDefault


class OrderAdmin(OrderAdminDefault):
    ordering = ('payed',)

admin.site.unregister(Order)
admin.site.register(Order, OrderAdmin)

Project Versions

Table Of Contents

Previous topic

Installation

This Page