2014-11-03 26 views
0

我正在做django-contrib评论的自定义评论应用程序到我的Django应用程序。终于,我获得了具有图像字段的评论应用程序,并且它显示在当然的模板中。但这是事情,当我试图发表评论与图片,它不保存图像文件,并说空(该字段是必填项)。任何人都可以帮我弄清楚。这里是一些代码片段。django自定义评论的图像字段不工作

models.py

class CommentWithPic(Comment): 
    image = models.ImageField(upload_to="comments/%Y/%m/%d/", null=True, blank=True) 

forms.py

class CommentFormWithPic(CommentForm): 
    image = forms.ImageField() 

    def get_comment_model(self): 
     return CommentWithPic 

    def get_comment_create_data(self): 
     data = super(CommentFormWithPic, self).get_comment_create_data() 
     data['image'] = self.cleaned_data['image'] 
     return data 

post_with_comment.html

{% render_comment_list for adi %} 
    {% get_comment_form for adi as form %} 
    <form action="{% comment_form_target %}" method="post"> 
     {% csrf_token %} 
     {% for field in form %} 
      {% if field.is_hidden %} 
       {{ field }} 
      {% else %} 
       {% if field.errors %}{{ field.errors }}{% endif %} 
       {{ field.label }} 
       {{ field }} 
      {% endif %} 
     {% endfor %} 
     <input type="hidden" value="{% url 'ad' adi.id %}"/> 
     <input type="submit" value="comment"/> 
    </form> 
+0

'CommentForm'是一个'ModelForm'?你有没有尝试过'image = forms.ImageField(required = False)'? – 2014-11-03 17:57:26

+0

@ TimmyO'Mahony,是的,我试过required = False,如果是这样,但它没有图像文件。而且,它是CommentForm。正如它在django文档中所说 – Zorig 2014-11-03 18:03:00

+0

那么你想要做什么?你说如果你不包含'required = False',那么它会发布评论页面并且抱怨图片字段是必需的(这是正确的功能),但是如果你包含'required = False',那么它会发表评论没有图像(这也是正确的功能) – 2014-11-03 18:20:44

回答

0

您需要声明的形式如下内容(注意enctype属性)时处理ImageField

<form enctype="multipart/form-data" action="{% comment_form_target %}" method="post">\ 

bind uploads to a form

与具有的FileField和ImageField的字段形式处理是一个小比正常形式更加复杂。 首先,为了上传文件,你需要确保你的元素正确定义ENCTYPE为“多/表单数据”

您还需要使图像可选形式:

class CommentFormWithPic(CommentForm): 
    image = forms.ImageField(required=False) 

    ... 
+0

好吧,我刚刚添加了'enctype =“multipart/form-data”'做了'requied = False'但是还是一样,它没有发布图片 – Zorig 2014-11-03 18:42:24

+0

实际上所有的文本字段都是发布的,除了图片字段。谁能帮我这个 – Zorig 2014-11-05 11:05:12