2012-03-25 54 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

相關問題