首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ImageField()没有在ModelForm -Django/ModelForm中保存图像

ImageField()没有在ModelForm -Django/ModelForm中保存图像
EN

Stack Overflow用户
提问于 2015-03-20 16:11:04
回答 1查看 9.8K关注 0票数 15

当我试图从我的表单上传图片时,所有的东西都会处理,但是图像没有被保存。

有人知道为什么会这样吗?

提前谢谢!

models.py:

代码语言:javascript
复制
class Photo(models.Model):
    user = models.ForeignKey(MyUser, null=False, blank=False)
    category = models.ForeignKey("Category", default=1, null=True, blank=True)
    title = models.CharField(max_length=30, null=True, blank=True)
    description = models.TextField(max_length=120, null=True, blank=True)
    image = models.ImageField(upload_to='user/photos/', null=True, blank=True)
    slug = models.SlugField(null=True, blank=True)
    active = models.BooleanField(default=True)
    timestamp = models.DateTimeField(auto_now_add=True, auto_now=False, null=True)
    updated = models.DateTimeField(auto_now_add=False, auto_now=True, null=True)

    class Meta:
        unique_together = ('slug', 'category')
        ordering = ['-timestamp']

    def __unicode__(self):
        return "%s" %(self.user)

views.py:

代码语言:javascript
复制
def photo_upload_view(request, username):
    u = MyUser.objects.get(username=username)

    if request.method == 'POST':
        form = PhotoUploadForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            messages.success(request, "Thank you! You have successfully posted your picture!")
            return HttpResponseRedirect('/')
    else:
        form = PhotoUploadForm()

    submit_btn = "Upload Post"

    context = {
        "form": form,
        "submit_btn": submit_btn
    }
    return render(request, "photos/photo_upload.html", context)

forms.py:

代码语言:javascript
复制
class PhotoUploadForm(forms.ModelForm):

    class Meta:
        model = Photo
        fields = ('user', 'category', 'title', 'description', 'image')

.html:

代码语言:javascript
复制
<form method='POST' action='{{ action_url }}'>{% csrf_token %}
    {{ form|crispy }}
    <input class='btn btn-default {{ submit_btn_class }}' type='submit' value='{{ submit_btn }}'/>
</form>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-20 16:14:54

应该将enctype=multipart/form-data属性添加到<form>标记中:

代码语言:javascript
复制
<form method='POST' action='{{ action_url }}' enctype='multipart/form-data'>
票数 39
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29171077

复制
相关文章

相似问题

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