2012-05-24 126 views
1

我替換保存方法與我自己的地方我使用cursor.callproc(prc,params),當我在Admin中保存表單都很好,但是當我只保存formset - 沒有任何事情發生。Django Formset.save()沒有保存模型

class BaseModel(models.Model): 
    def save(self): 
     proc_name="CLN_%s_EDIT" % self._meta.db_table 
     ret=callproc(self,proc_name) 
     if not ret: 
      super(BaseModel,self).save() 
    def delete(self): 
     proc_name="CLN_%s_EDIT" % self._meta.db_table 
     callproc(self,proc_name,'del') 
    class Meta: 
     abstract=True 

def tarifs(request): 
    TarifFormSet = modelformset_factory(TarifPlan)#,form=TarifPlanForm) 
    if request.method == 'POST': 
     formset = TarifFormSet(request.POST, request.FILES) 
     if formset.is_valid(): 
      #IPShellEmbed()() 
      formset.save() 
      return HttpResponseRedirect('') 
      # do something. 
     #else: 
      #IPShellEmbed()() 
    else: 
     formset = TarifFormSet() 
    c={"formset": formset,} 
    c.update(csrf(request)) 
    return render_to_response("tarifs.html",c) 
+0

正在如果表單集是無效的,你檢查? –

+0

是的,一切都是有效的。 – user1414937

回答

1

我猜你的形式沒有改變,而在實際formset.save_existing_objects()節省被跳過。

+0

當使用super(BaseModel,self).save()全部保存就好了。 – user1414937

+0

然後你可以在formset.forms中使用類似'form的形式:if form.is_valid():form.save()' – ilvar

1

閱讀this我發現解決此問題 - 只需要添加

cursor.connection.commit() 

cursor.callproc()