2017-04-24 44 views
0

我的视图图像不是通过Django的形式上传

def apost(request): 
    if request.method =='POST': 
     form = APostForm(request.POST, request.FILES) 
     if form.is_valid(): 
      form = form.save(commit=False) 
      form.slug = slugify(form.title) 
      form.save() 
      return redirect('apost') 
    else: 
     form = APostForm() 

    template_name = 'dadmin/form.html' 
    items = Post.objects.all() 
    context = {'title':'Add Post','form':form,'items':items} 
    return render (request, template_name, context) 

我的形式

class APostForm(forms.ModelForm): 
    class Meta: 
     model = Post 
     fields = {'title','photo','content'} 

模式

photo = models.ImageField(upload_to='images') 

没有图片上传接受光度计o被选中,但点击保存时。它显示这个字段是必需的错误。我已经在这里搜索了这些问题,但请求.FILES解决了其他问题,但不是地雷。怎么了?

+1

你有'ENCTYPE ='在HTML “的multipart/form-data的” 表单标签? –

+0

呃我错过了。它现在工作。谢谢! –

回答

1

你应该在模板中,你上传的形式使用:

<form class="form-horizontal form_middle" enctype='multipart/form-data' method="POST"> 
#apply logic for media upload 
</form> 
+0

从评论中窃取答案的好工作。 –

-1

django中的模型表单有点奇怪。 更改forms.py到 -

class APostForm(forms.ModelForm): 
    photo=forms.FileField(label='Upload image') # or image field 
    class Meta: 
     model = Post 
     fields = {'title','content'} 

form.save()会自动保存现场。

+1

这并没有为我工作。但在模板中工作的

。谢谢! –