我将使用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/
答案 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>`