2012-03-25 55 views
1

我有这些模型:is_valid()返回true,但的ModelForm不会被保存

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 

但不会保存Gallery的,而is_valid()True

有什么建议吗?

回答

3

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

请参阅How can I upload files asynchronously?

+0

是的,我已经在firebug中试过了,它只是发布文件名 – 2012-03-25 16:28:01

2

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

你是对的,模型表格应该照顾你的上传。 Have you seen this related question?你已经确定你的模板声明等的形式:

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

即与multipart/form-data

+0

但我用modelform避免以这种方式处理文件! – 2012-03-25 15:24:52

+0

是的,形式是正确的! – 2012-03-25 16:13:19

+1

+1“multipart/form-data”虽然在这里没有答案 – okm 2012-03-25 16:27:56

相关问题