===== 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() И тогда после валидации и сохранения заказа клиент будет перенаправлен на вашу страницу, на которой вы можете сделать с ним что захотите. Например так: * Добавить в 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)