I've got a ModelForm based on a Picture.
class Picture(models.Model):
name = models.CharField(max_length=100)
pub_date = models.DateTimeField('date published')
tags = models.ManyToManyField('Tag', blank=True)
content = models.ImageField(upload_to='instaton')
def __unicode__(self):
return self.name
class PictureForm(forms.ModelForm):
class Meta:
model = Picture
exclude = ('pub_date','tags')
That's the model and the ModelForm, of course.
def submit(request):
if request.method == 'POST': # if the form has been submitted
form = PictureForm(request.POST)
if form.is_valid():
return HttpResponseRedirect('/django/instaton')
else:
form = PictureForm() # blank form
return render_to_response('instaton/submit.html', {'form': form}, context_instance=RequestContext(request))
That's the view (which is being correctly linked to by urls.py)
Right now, I do nothing when the form submits. I just check to make sure it's valid. If it is, I forward to the main page of the app.
<form action="/django/instaton/submit/" method="post"> {% csrf_token %}
{{ form.as_p }}
<input type="submit" value"Submit" />
</form>
And there's my template (in the correct location).
When I try to actually fill out the form and just validate it, even if I do so correctly, it sends me back to the form and says "This field is required" between Name and Content. I assume it's referring to Content, but I'm not sure.
What's my problem? Is there a better way to do this?