Как разрешить загрузку более одного изображения на django?
Вы уже можете . В самом деле, вы можете создать несколько объектов Picture
для одного и того же Product
. Например:
myproduct = Product.objects.first()
Picture.objects.create(<b>product=my_product</b>, product_pic=request.FILES['image1'])
Picture.objects.create(<b>product=my_product</b>, product_pic=request.FILES['image2'])
Таким образом, мы создаем два объекта Picture
, которые ссылаются на тот же Product
.
Вы можете использовать formsets , чтобы отображать форму для Picture
несколько раз. Например:
from django.forms import inlineformset_factory
from django.shortcuts import redirect
from app.models import Product, Picture
def my_view(request, product_pk):
PictureFormSet = inlineformset_factory(Product, Picture, fields=('product_pic',))
product = Author.objects.get(pk=product_pk)
if request.method == 'POST':
formset = <b>PictureFormSet(</b>request.POST, request.FILES<b>, instance=product)</b>
if formset.is_valid():
formset.save()
return redirect(<i>'name-of-some-view'</i>)
else:
formset = PictureFormSet(instance=product)
return render(request, 'some_template.html', {'formset': formset})
и в вашем шаблоне вы затем визуализируете это с помощью:
<form enctype="multipart/form-data" method="post" action="{% url 'name-of-view' product_pk=formset.instance.pk %}">
{% csrf_token %}
{{ <b>formset</b> }}
</form>