У меня есть форма загрузки, которая позволит пользователю загружать фотографию, документ Word или и то, и другое. Мне нужна помощь с логикой, чтобы, пока у них есть фотография ИЛИ документ, выбранный для загрузки, форма действительна и загрузка будет работать. Он всегда работает, когда у меня есть ОБА фото и документ, но работает случайным образом, когда это просто фото или документ. Вот мой текущий код:
def upload(request):
"""
Uploads document/photo
"""
if request.method == 'POST':
form1 = DocumentForm(request.POST, request.FILES)
form2 = PhotoForm(request.POST, request.FILES)
if form1.is_valid() and form2.is_valid() :
post1 = Document(user = request.user, document= form1.cleaned_data['document'], title = form1.cleaned_data['title'])
post1.save()
post2 = Photo(user = request.user, alias = request.user.username, img = form2.cleaned_data['img'], title = "")
post2.save()
return HttpResponse(template.Template('''
<html><head><title>Uploaded</title></head> <body>
<h1>Uploaded</h1>
</body></html>
'''
).render( template.Context({}))
)
elif form1.is_valid():
post1 = Document(user = request.user, document = form1.cleaned_data['document'], title = form1.cleaned_data['title'])
post1.save()
return HttpResponse(template.Template('''
<html><head><title>Uploaded</title></head> <body>
<h1>Uploaded</h1>
</body></html>
'''
).render( template.Context({}))
)
else:
if form2.is_valid():
post2 = Photo(user = request.user, alias = request.user.username, img = form2.cleaned_data['img'], title = "")
post2.save()
return HttpResponse(template.Template('''
<html><head><title>Uploaded</title></head> <body>
<h1>Uploaded</h1>
</body></html>
'''
).render( template.Context({}))
)
else:
form1 = DocumentForm()
form2 = PhotoForm()
return render_to_response('upload.html', {'form1': form1, 'form2':form2 }, context_instance=RequestContext(request))
Я знаю, что должен быть лучший способ. Любая помощь будет принята с благодарностью. Спасибо