При такой структуре кода никак, на сколько я понимаю. Придётся внести ряд изменений.
Во-первых, изменить модель так, чтобы она могла хранить больше одного изображения:
class Photo(models.Model):
image = models.ImageField(upload_to='photos')
location = models.ForeignKey(Location, related_name='photos')
class Location(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL, default=1)
name = models.CharField(max_length=100, verbose_name="Локация", default=u'')
Во-вторых, изменить форму, чтобы она могла принимать больше одного изображения:
class LocationForm(forms.Form):
name = forms.CharField(label=u'Локация')
photos = forms.ImageField(label=u'Фотографии', widget=forms.FileInput(attrs={'multiple': 'multiple'}))
Наконец, усложнить алгоритм загрузки:
from django.shortcuts import render, redirect
from django.core.files.base import ContentFile
def add_location(request):
if request.method == 'GET':
form = LocationForm()
return render(request, 'add_location.html', {'form': form})
elif request.method == 'POST':
form = LocationForm(request.POST, requst.FILES)
if form.is_valid():
location = Location.objects.create(user=request.user, name=form.cleaned_data['name'])
for f in request.FILES.getlist('photos'):
data = f.read() #Если файл целиком умещается в памяти
photo = Photo(location=location)
photo.image.save(f.name, ContentFile(data))
photo.save()
return redirect(location) #Надо определить get_absolute_url() в модели
else:
return render(request, 'add_location.html', {'form': form})