Как правильно загружать несколько изображений
У меня есть простая модель, которая имеет четыре различных поля fileFields для загрузки различных файлов и изображений. вот мои модели:
class DocumentInfo(models.Model):
id = models.AutoField(primary_key=True)
certificate = models.FileField(upload_to="documents", null=True)
id_card = models.FileField(upload_to="documents", null=True)
service_certificate = models.FileField(upload_to="documents", null=True)
educational_certificate = models.FileField(upload_to="documents", null=True)
Пользователям нужно просто загрузить несколько изображений в четыре отдельных поля, поэтому я создал простую форму и передал ее в представления следующим образом:
class DocumentForm(forms.ModelForm):
class Meta:
model = DocumentInfo
fields = ['certificate','id_card','service_certificate','educational_certificate']
views.py:
def document_info(request):
if request.method == 'POST':
form = DocumentForm(request.POST, request.FILES)
if form.is_valid():
form.instance.user = request.user
form.save()
return redirect('document')
if 'delete' in request.GET:
return delete_item(DocumentInfo, request.GET['id'])
else:
form = DocumentForm()
documents = DocumentInfo.objects.filter(user=request.user)
context = {
'form': form,
'documents': documents,
}
return render(request, 'reg/documents.html', context)
сначала все работает нормально, но я не могу ничего перезагрузить! загруженное изображение не сохраняется во второй раз и не удаляется. что я делаю не так?
попробуйте это. views.py
def document_info(request):
documents = DocumentInfo.objects.filter(user=request.user).order_by('-pk')
if request.method == 'POST':
form = DocumentForm(request.POST, request.FILES,instance=documents[0])
if form.is_valid():
if not documents:
form.instance.user = request.user
form.save()
return redirect('document')
else:
form = DocumentForm(instance=documents[0])
context = {
'form': form,
'documents': documents,
}
return render(request, 'reg/documents.html', context)