В офиц. доке не нашёл того, что мне нужно и решил сделать самому.
Когда в админке создаешь Inline'ы есть там ссылочка "Добавить ещё один ......".
Данную вещь я сделал на самом сайте. Не знаю как реализовали это во Djang'е.
есть форма:
forms.py
class PhotoForm(forms.ModelForm):
class Meta:
model = Photo
fields = ('image','price')
создаю из неё FormSet и кидаю в шаблон:
views.py
FormSet = formset_factory(PhotoForm, extra=1, max_num=5)
...
...
formset = FormSet()
return render_to_response(
'template.html',
{'formset':formset}
)
template.html
{{ formset.management_form }}
{% for form in formset %}
Фотография {{ form.image }}{{ form.image.errors }}
Цена {{ form.price }}{{ form.price.errors }} руб.
Добавить ещё фото
{% endfor %}
Вот что я получаю:
Фотография
Цена руб.
Добавить ещё фото
на ссылку "Добавить ещё фото" вешаю JS:
$('.add_image').click(function(){
//Ищу последний input type="file" и вытаскиваю номер
var last_id = $('.upload_field:last input[type="file"]').attr('name');
//Вытаскиваю значение максимума форм
var max_items = $('#id_form-MAX_NUM_FORMS').val();
max_items = parseInt(max_items) -1 ;
last_id = last_id.replace('form-','');
last_id = last_id.replace('-image','');
last_id = parseInt(last_id);
//Если кол-во форм не достигло максимума
if (last_idФотография Цена руб.';
//Вставляем наш html
$(this).parent().before(newdom);
//Увеличиваем значение поля количества выведенных форм изначально
$('#id_form-TOTAL_FORMS').val(parseInt(last_id) +1);
}
return false;
});
Хочу спросить как это можно сделать проще/элегантнее/лучше/средствами Djang'и ?
Updated 16 Nov. 2011, 12:44 by Antonio.