Reputation: 2589
I have this model:
fs = FileSystemStorage(location='/var/tmp/media/uploads/photos')
class Picture(models.Model):
""" vom user hochgeladenes bild """
image_field = models.ImageField(storage=fs)
user = models.ForeignKey('auth.User')
And this form:
class PictureForm(ModelForm):
class Meta:
model = Picture
fields = ['user','image_field',]
But when I try to validate, it won't work!
class PictureAddView(View):
def get(self,request):
picture_form = PictureForm()
context = {'picture_form': picture_form,}
return render(request, 'picturevault/picture_add.html', context)
def post(self,request):
from PIL import Image
Image.init()
picture_form = PictureForm(request.POST,request.FILES)
if picture_form.is_valid():
messages.add_message(request, messages.SUCCESS, 'picture link form valid')
else:
messages.add_message(request, messages.ERROR, 'picture link form invalid')
return HttpResponseRedirect(reverse('picturevault_picture_add_view'))
Can you spot the error?
All I get is 'picture link form invalid' which means that it did not pass "picture_form.is_valid()".
Here is the template:
{% extends 'base.html' %}
{% block content %}
<form method="POST" action="" >
{% csrf_token %}
{% for field in picture_form %}
{{ field }}
{% endfor %}
<input type="submit" value="submit" />
</form>
{% endblock %}
Upvotes: 1
Views: 631
Reputation: 4781
First thing I can spot is that you're missing enctype="multipart/form-data"
on your HTML form
tag. Without that, you can't upload files (including images) via a form.
Upvotes: 3