我有一个基于图片的ModelForm。
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')
当然,这就是模型和ModelForm。
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))
这是视图(通过urls.py正确链接)
现在,表单提交时我什么都不做。我只是检查以确保它有效。如果是,我转发到应用程序的主页面。
<form action="/django/instaton/submit/" method="post"> {% csrf_token %}
{{ form.as_p }}
<input type="submit" value"Submit" />
</form>
还有我的模板(在正确的位置)。
当我尝试填写表单并进行验证时,即使我正确地进行了验证,它也会将我发回表单并在名称和内容之间说“此字段是必需的”。我认为它指的是内容,但我不确定。
我的问题是什么?有更好的方法吗?
答案 0 :(得分:2)
您需要在表单中包含文件
form = PictureForm(request.POST, request.FILES)