首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Django ModelForm图像字段上传

Django ModelForm图像字段上传
EN

Stack Overflow用户
提问于 2013-10-28 15:14:31
回答 2查看 19.5K关注 0票数 20

我是Django的新手,我在使用ModelForm处理图片上传时遇到了一个问题。我的模型如下:

class Project(models.Model):
    name = models.CharField(max_length=100)
    description = models.CharField(max_length=2000)
    startDate = models.DateField(auto_now_add=True)
    photo = models.ImageField(upload_to="projectimg/", null=True, blank=True)

模型形式如下:

class AddProjectForm(ModelForm):
    class Meta:
        model = Project
        widgets = {
            'description': Textarea(attrs={'cols': 80, 'rows': 50}),
        }
        fields = ['name', 'description', 'photo']

View函数是:

def addProject(request, template_name):
if request.method == 'POST':
    addprojectform = AddProjectForm(request.POST,request.FILES)
    print addprojectform
    if addprojectform.is_valid():
        newproject = addprojectform.save(commit=False)
        print newproject
        print request.FILES
        newproject.photo = request.FILES['photo']
        newproject.save()
        print newproject.photo
else:
    addprojectform = AddProjectForm()

newProposalNum = projectProposal.objects.filter(solved=False).count()
return render(request, template_name, {'addprojectform':addprojectform,
                                       'newProposalNum':newProposalNum})

模板为:

<form class="bs-example form-horizontal" method="post" action="">{% csrf_token %}
                      <h2>Project Name</h2><br>
                      {{ addprojectform.name }}<br>
                      <h2>Project Description</h2>
                      {{ addprojectform.description }}<br>
                      <h2>Image Upload</h2><br>
                      {{ addprojectform.photo }}<br>
                      <input type="submit" class="btn btn-success" value="Add Project">
                  </form>

有没有人可以帮我,或者你能举一个图片上传的例子吗?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-10-28 23:49:46

好的,谢谢大家。我发现自己犯了一个愚蠢的错误。我应该在<form>中添加enctype="multipart/form-data",否则它不会上传文件。

票数 54
EN

Stack Overflow用户

发布于 2013-10-28 22:07:05

您不需要将newproject.photo设置为request.FILES['photo'] (实际上,这可能会破坏您的代码)。只需使用addprojectform.save()而不是newproject = addprojectform.save(commit=False)保存addprojectform即可。点击此处查看更多信息:https://docs.djangoproject.com/en/1.5/topics/http/file-uploads/#handling-uploaded-files-with-a-model

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19628979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档