为django SHOP提供简单易用的产品变体模块
项目描述
此应用旨在提供一种快速创建产品变体的方法,适用于大多数简单情况。
它将变体视为购物车修饰符中的 {label: value} 条目,因此非常适合不同价格的颜色或自建电脑等。
安装
此功能需要django SHOP工作(https://github.com/chrisglass/django-shop)
- 将应用添加到settings.py中的INSTALLED_APPS 
- 将shop_simplevariations.cart_modifier.ProductOptionsModifier添加到您的SHOP_CART_MODIFIERS设置中。 
- 在urls.py中添加以下内容(r’^shop/cart/’, include(simplevariations_urls)),在(r’^shop/’, include(shop_urls))之前。 
您的urls.py应如下所示
from django.conf.urls.defaults import *
from django.contrib import admin
from shop import urls as shop_urls
from shop_simplevariations import urls as simplevariations_urls
admin.autodiscover()
urlpatterns = patterns('',
    (r'^admin/', include(admin.site.urls)),
    (r'^shop/cart/', include(simplevariations_urls)),
    (r'^shop/', include(shop_urls)),
)
用法
- 在管理视图中创建一个选项组 
- 将其绑定到产品上 
- 向组中添加选项及其对应的价格。 
- 当CartItemOption对象与CartItem对象相关联时,选项的值将添加到购物项的价格中,并在购物车/订单中添加相应的额外字段。 
- 覆盖django-shop的product_detail.html模板,并添加选择元素,以便用户可以选择变体。 
product_detail.html模板
shop附带的基本product_detail.html模板不考虑变体。
因此您需要覆盖模板。django-shop-simplevariations附带两个帮助创建下拉列表的模板标签,以便客户可以实际选择变体。
首先确保加载simplevariation模板标签
{% load simplevariation_tags %}
<h1>Product detail:</h1>
...
然后创建选项组和选项的下拉列表
<form method="post" action="{% url cart %}">{% csrf_token %}
{% with option_groups=object|get_option_groups %}
  {% if option_groups %}
    <div>
      <h2>Variations:</h2>
      {% for option_group in option_groups %}
        <label for="add_item_option_group_{{ option_group.id }}">{{ option_group.name }}</label>
        {% with option_group|get_options as options %}
          <select name="add_item_option_group_{{ option_group.id }}">
            {% for option in options %}
              <option value="{{ option.id }}">{{ option.name }}</option>
            {% endfor %}
          </select>
        {% endwith %}
      {% endfor %}
    </div>
  {% endif %}
{% endwith %}
{% with text_options=object.text_options.all %}
  {% if text_options %}
    <div>
      <h2>Text options:</h2>
      {% for text_option in text_options %}
        <label for="add_item_text_option_{{ text_option.id }}">{{ text_option.name }}</label>
        <input type="text" name="add_item_text_option_{{ text_option.id }}" value=""/>
      {% endfor %}
    </div>
  {% endif %}
{% endwith %}
<input type="hidden" name="add_item_id" value="{{object.id}}">
<input type="hidden" name="add_item_quantity" value="1">
<input type="submit" value="Add to cart">
</form>
贡献
请随意在github上分叉此项目,发送pull请求……开发讨论在django SHOP邮件列表(django-shop@googlegroups.com)上进行。