2
Are you having a specific problem with the way django explains how to do this? https://docs.djangoproject.com/en/dev/topics/http/file-uploads/
First of all, you need to assign enctype="multipart/form-data"
inside the <form>
tag.
If you must do this manually instead of leveraging the power of Django’s forms framework, you need to manually assign the file / field data to your model.
def myview(request):
image = request.FILES['imageName_1']
tour = Tour()
tour.Name = request.POST.get('name')
tour.capacity = request.POST.get('capacity')
tour.image.save(image.name, image)
tour.save()
I’d recommend checking out django’s ModelForms as a view / template combo that does this and much more (error checking / redisplaying) can be written in one minute.
class MyForm(forms.ModelForm):
class Meta:
model = Tour
def myview(self):
if request.method == 'POST':
form = MyForm(request.POST, request.FILES)
if form.is_valid():
form.save()
else:
form = MyForm()
return render(request, 'my_template.html', {'form': form})
<form method='POST' enctype="multipart/form-data">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" />
</form>
Source:stackexchange.com