使用jquery ajax发送的图像数据不会使用ModelForm保存

时间:2012-03-26 12:55:13

标签: django jquery

我将使用jquery ajax编辑ImageField,所以我使用了jquery form plugin,这是代码:

<form id='form_upload' action="." method="POST" enctype="multipart/form-data">
    <input type='file' id='id_HeadImage' name='id_HeadImage' />
</form>
<script typr="text/javascript">    
var options = {
      dataType: 'xml',
      url: '{% url DrHub.views.editNews param1,param2 %}',
    }
    $('#form_upload').ajaxSubmit(options);
</script>
<head>中的

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script> 
<script src="http://malsup.github.com/jquery.form.js"></script> 

并在服务器端:

if ('id_HeadImage' in request.FILES) and (request.FILES['id_HeadImage']):
    gForm=GalleryForm(request.POST,request.FILES,instance=newsInstance.gallery_ptr)
    if gForm.is_valid():
       gForm.save()

你可以看到我要编辑一个名为Gallery的模型的ImageField。 我怎么能这样做?

这是图库模型:

class Gallery(models.Model):
   HeadImage = models.ImageField(upload_to="gallery",blank=True,null=True)

虽然gForm.is_valid()会返回True,但不会保存,HeadImage Field的图片也不会更改。

注意:我在firebug中检查了这个,我确信数据已发送且request.FILES有价值。

这里有什么问题?

编辑:我的工作基于这篇文章:http://www.laurentluce.com/posts/upload-to-django-with-progress-bar-using-ajax-and-jquery/

1 个答案:

答案 0 :(得分:1)

尝试使用ajaxForm代替ajaxSubmit:

`

<form id='form_upload' action="." method="POST" enctype="multipart/form-data">
    <input type='file' id='id_HeadImage' name='id_HeadImage' />
</form>
<div id="empty">
</div>

<script type="text/javascript">
 function handleResult(responseText, statusText, xhr, $form) {
              //do stuff here
 };

 jQuery(document).ready(function() {   
      var options = {
          target: '#empty',
          // Not sure if you should use xml here, I would suggest json . , 
          dataType: 'xml',
          url: '{% url DrHub.views.editNews param1,param2 %}',
          success: handleResult,
          }
      $('#form_upload').ajaxForm(options);
 });

</script>`