Package: django-shop-simplevariations
This app’s purpose is to provide a way to quickly create product variations for
most simple cases.It considers variations as a {label: value} entry in the cart modifiers, so it
is perfect for things like differently priced colors, or build-your-own
computers for example.InstallationThis requires django SHOP to work (https://github.com/chrisglass/django-shop)Add the app to your INSTALLED_APPS in your settings.pyAddshop_simplevariations.cart_modifier.ProductOptionsModifierto yourSHOP_CART_MODIFIERSsetting.Add(r’^shop/cart/’, include(simplevariations_urls)),to yoururls.pyjust before(r’^shop/’, include(shop_urls)),Your urls.py should look like this: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)),
)UsageCreate an Option group in the admin viewBind it to a productAdd options and the corresponding price to the group.When aCartItemOptionobject is linked to aCartItem, the option’s value
will be added to the CartItem’s price and a corresponding extra field willbe
added to the Cart/Order.Override django-shop’sproduct_detail.htmltemplate and add selection
elements so that your users can select variations.The product_detail.html templateThe simpleproduct_detail.htmlthat ships with the shop doesn’t take
variations into consideration.Therefore you need to override the template. django-shop-simplevariations
ships with two templatetags that help creating drop down lists so that a
customer can actually chose variation.First make sure to load the simplevariation templatetags:{% load simplevariation_tags %}
<h1>Product detail:</h1>
...Next create the drop down lists of OptionsGroups and Options:<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>ContributingFeel free to fork this project on github, send pull requests…
development discussion happends on the django SHOP mailing list
(django-shop@googlegroups.com)