代码之家  ›  专栏  ›  技术社区  ›  Rakesh Sharma

通过django中的ModelForm上传图像

  •  1
  • Rakesh Sharma  · 技术社区  · 8 年前

    当我试图提交我的表格时,它说“这个字段是必填的。” 对于一个图像,即使我提供了图像和其他细节。

    形式。py文件

    from django.forms import ModelForm
    from .models import Status
    
    class CreatePost(ModelForm):
    
        class Meta:
            model=Status
            fields = ["username","text","privacy","image"]
    

    模型。py文件

    class Status(models.Model):
        title=models.CharField(max_length=20,default="updated status")
        username = models.ForeignKey('User',on_delete=models.CASCADE)
        #username = models.CharField(max_length=20)
        text = models.TextField(blank=True, null=True)
        image = models.ImageField(upload_to="media/image",null=True)
        time = models.DateTimeField(auto_now=True)
        privacy = models.CharField(max_length=5, blank=True, null=True)
        gid = models.IntegerField(blank=True, null=True)
        dp = models.SmallIntegerField(blank=True, null=True)
    
        class Meta:
            #unique_together = (('username', 'dp'),)
            #managed = False
            db_table = 'status'
    

    看法py公司

    def create_post(request):
        form=CreatePost(request.POST or None)
        if request.method=="POST":
            if form.is_valid():
                instance=form.save(commit=False)
                instance.time=time.time()
                instance.save()
                return redirect('post',)
    
        return render(request,"uposts/createpost.html",{'form':form})
    

    createpost。html

    {% extends "friendsbook/structure.html" %}
    {% block content %}
    <form action="" method="post">
        {%csrf_token %}
        {{ form.as_p }}
        <input type="submit" value="Save">
    </form>
    
    {% endblock %}
    

    点击保存按钮后的内容

    enter image description here

    我在表单中只取4个字段,因为所有其他字段都可以为空。对于时间场,我在视图中处理它。通过给时间。

    1 回复  |  直到 8 年前
        1
  •  3
  •   Vijesh Venugopal    8 年前

    您必须像这样修改模板,添加多部分/表单数据:

    <form method="post" enctype="multipart/form-data">
    {% csrf_token %}
    <input type="file" name="myfile">
    <button type="submit">Upload</button>
    </form>
    

    在视图中。py,您可以使用 request.FILES .

    推荐文章