{# templates/adminpanel/product_form.html #} {% extends "adminpanel/base.html" %} {% load widget_tweaks %} {% block pagetitle %}{% if mode == "create" %}New product{% else %}Edit product{% endif %}{% endblock %} {% block page_header %}{% if mode == "create" %}New product{% else %}Edit product{% endif %}{% endblock %} {% block header_actions %}
Back
{% endblock %} {% block content %}
{% csrf_token %} {% if form.non_field_errors %}
{% for e in form.non_field_errors %}{{ e }}
{% endfor %}
{% endif %}
{% if form.title.errors %} {% render_field form.title|add_class:"form-control is-invalid" %} {% for e in form.title.errors %}
{{ e }}
{% endfor %} {% else %} {% render_field form.title|add_class:"form-control" %} {% endif %}
{% if form.category.errors %} {% render_field form.category|add_class:"form-select is-invalid" %} {% for e in form.category.errors %}
{{ e }}
{% endfor %} {% else %} {% render_field form.category|add_class:"form-select" %} {% endif %}
{% if form.price.errors %} {% render_field form.price|add_class:"form-control is-invalid" %} {% for e in form.price.errors %}
{{ e }}
{% endfor %} {% else %} {% render_field form.price|add_class:"form-control" %} {% endif %}
{% if form.unit.errors %} {% render_field form.unit|add_class:"form-control is-invalid" %} {% for e in form.unit.errors %}
{{ e }}
{% endfor %} {% else %} {% render_field form.unit|add_class:"form-control" %} {% endif %}
{% if form.weight_grams.errors %} {% render_field form.weight_grams|add_class:"form-control is-invalid" %} {% for e in form.weight_grams.errors %}
{{ e }}
{% endfor %} {% else %} {% render_field form.weight_grams|add_class:"form-control" %} {% endif %}
{% if form.description.errors %} {% render_field form.description|add_class:"form-control is-invalid"|attr:"rows:4" %} {% for e in form.description.errors %}
{{ e }}
{% endfor %} {% else %} {% render_field form.description|add_class:"form-control"|attr:"rows:4" %} {% endif %}
{% if form.in_stock.errors %} {% render_field form.in_stock|add_class:"form-check-input is-invalid" %} {% for e in form.in_stock.errors %}
{{ e }}
{% endfor %} {% else %} {% render_field form.in_stock|add_class:"form-check-input" %} {% endif %}
{% if form.stock_qty.errors %} {% render_field form.stock_qty|add_class:"form-control is-invalid" %} {% for e in form.stock_qty.errors %}
{{ e }}
{% endfor %} {% else %} {% render_field form.stock_qty|add_class:"form-control" %} {% endif %}
{% if form.rating.errors %} {% render_field form.rating|add_class:"form-control is-invalid" %} {% for e in form.rating.errors %}
{{ e }}
{% endfor %} {% else %} {% render_field form.rating|add_class:"form-control" %} {% endif %}
{% if form.reviews_count.errors %} {% render_field form.reviews_count|add_class:"form-control is-invalid" %} {% for e in form.reviews_count.errors %}
{{ e }}
{% endfor %} {% else %} {% render_field form.reviews_count|add_class:"form-control" %} {% endif %}
{% if form.tags.errors %} {% render_field form.tags|add_class:"form-control is-invalid"|attr:"placeholder:fresh,local" %} {% for e in form.tags.errors %}
{{ e }}
{% endfor %} {% else %} {% render_field form.tags|add_class:"form-control"|attr:"placeholder:fresh,local" %} {% endif %}
Comma-separated, e.g. fresh,local,organic
{% if form.thumbnail.errors %} {% render_field form.thumbnail|add_class:"form-control is-invalid" %} {% for e in form.thumbnail.errors %}
{{ e }}
{% endfor %} {% else %} {% render_field form.thumbnail|add_class:"form-control" %} {% endif %}

Image gallery

{{ formset.management_form }}
{% for f in formset %} {% if f.id %}{{ f.id }}{% endif %}
{% if f.image.errors %} {% render_field f.image|add_class:"form-control is-invalid" %} {% for e in f.image.errors %}
{{ e }}
{% endfor %} {% else %} {% render_field f.image|add_class:"form-control" %} {% endif %}
{% if f.alt.errors %} {% render_field f.alt|add_class:"form-control is-invalid" %} {% for e in f.alt.errors %}
{{ e }}
{% endfor %} {% else %} {% render_field f.alt|add_class:"form-control" %} {% endif %}
{% render_field f.DELETE|add_class:"form-check-input" %}
{% endfor %}
Slug is generated automatically from the title.
Cancel
{% endblock %}