У меня есть Джанго modelformset, который делает следующее:Удаление отдельных связанных файлов - Джанго
Добавить страницу
- Добавить модель инстанс «продукта»
- модели связаны между собой (ForeignKey) в «продукт» для добавления нескольких изображений в экземпляр продукта.
Редактировать страницу
- formset также на странице редактирования, она предварительно заполняется с экземпляром «продукта» и связанных с ним изображений.
Вот проблема, когда я загрузить несколько изображений на продукт, я хочу, чтобы иметь возможность удалить выбранные изображения на странице редактирования (держать остальное).
Как передать отдельное изображение - его местоположение в базе данных и его расположение в файловой системе, какой-либо метод удаления? В идеальном мире я бы хотел добиться этого каким-то методом AJAX, но с чего начать?
Просмотр для редактирования ...
def EditProduct(request, pk):
instance = get_object_or_404(Product, id=pk)
ImageFormSet = modelformset_factory(ProductImage,
form=ImageForm, extra=4)
if request.method == 'POST':
product_form = AddEditProductForm(request.POST, instance=instance)
formset = ImageFormSet(request.POST, request.FILES,
queryset=ProductImage.objects.none())
if product_form.is_valid() and formset.is_valid():
product = product_form.save()
images = formset.save(commit=False)
for image in images:
image.product = product
image.save()
return HttpResponseRedirect('/product/')
else:
print (product_form.errors, formset.errors)
else:
product_form = AddEditProductForm(instance=instance)
formset = ImageFormSet(queryset=ProductImage.objects.all())
return render(request, 'product/edit.html',
{'product_form': product_form, 'formset': formset},
context_instance=RequestContext(request))
Незначительная вещь - Как я могу реально отобразить, в шаблоне, изображения, которые уже были загружены в продукт? В настоящее время изображения отображаются только как предварительно заполненные дополнительные экземпляры набора форм (url to image file).
шаблон для редактирования ...
<form action="" method="POST" enctype="multipart/form-data">
{% csrf_token %}
<table>
<p> {{ product_form.as_ul }}</p>
<p> current images </p>
{% for product in product.images.all %}
<img src="{{ product.image.url }}" alt="...">
{% endfor %}
<br> <p> break </p>
{{ formset.management_form }}
{% for form in formset %}
{{ form }}
{% endfor %}
</table>
<input type="submit" value="Confirm Changes">