is_valid()返回True但不保存modelform

时间:2012-03-25 13:28:54

标签: jquery ajax django

我有这些模特:

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

class News(Gallery):
   Name=models.CharField(max_length=100) 
   #some other fields

你知道有了这个继承,新闻模型有一个gallery_ptr字段,现在我要使用ajax更新这个字段:

$.ajax({
    url:'{% url DrHub.views.editNews dr.webSite,news.pk %}',
    type:'POST',
    data:{id_HeadImage:$('#id_HeadImage').val(),id_title:$('#id_title').val(),id_category:$('#id_category').val(),id_description:$('#id_description').val()},
})

views.py我这样做:

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

Image的{​​{1}}将无法保存,而Galleryis_valid()

任何建议?

2 个答案:

答案 0 :(得分:3)

你不能简单地像这样在ajax上传文件。此外,我相信$('#id_HeadImage')。val()只包含文件名。

请参考How can I upload files asynchronously?

答案 1 :(得分:2)

表单有效,但您实际上没有处理上传的文件(即读取并保存)。看看example in the django docs

你是对的,模型表格应该为你上传。 Have you seen this related question?你确定你的模板声明了如下形式:

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

即。与multipart/form-data