Django 图像字段未在前端更新

Django Image Field not Updating on the Front

我正在尝试让我的应用程序验证我的应用程序模板中的图像上传字段并保存上传的所有新图像。在管理方面一切正常,但是当我在前面更改图像时,它不会被保存。

这是我的模型

def imageupload(instance, filename):
    return os.path.join('static/petition-photos/', filename)

# Create your models here.

class Petition(models.Model):
    title = models.CharField(max_length= 90, default="Enter petition title here")
    created_on = models.DateTimeField(auto_now_add=True)
    image = models.ImageField(null=False, upload_to=imageupload)
    video = models.CharField(max_length=600, default="Enter an external video link")
    petition = models.TextField(null=False, default="Type your petition here")
    created_by = models.ForeignKey(User)

这是我的看法class:

class NewPetitionView(generic.edit.CreateView):
model = Petition
template_name = 'petition/petition_form.html'
fields= ['title','petition', 'image', 'video']
success_url = '/dashboard/'

def form_valid(self, form):
    form.instance.created_by = self.request.user
    return super(NewPetitionView, self).form_valid(form)

这是我的表单模板:

{% include 'layout/header.html' %}

{% block content %}
    <form action="" method="post">
        {{form.as_p}}
        <button type="submit">Submit</button>
        {% csrf_token %} 
    </form>
{% endblock %}

当我将图像上传到新 post 或尝试编辑其中一个 posted 项目的图像字段时,我收到 "This field is required" 通知。

我做错了什么?

您需要在 <form> 中添加 enctype="multipart/form-data" 才能让文件上传工作。

<form action="" method="post" enctype="multipart/form-data">

django doc.