2013-05-12 79 views
0

我在使用django formset時遇到問題。發出POST請求會導致ValidationErrors與表單。我看了SO上的其他帖子,但沒有任何答案爲我工作。有任何想法嗎 ?django formset導致ValidationError

class CompileTime(models.Model): 
    changelist   = models.ForeignKey(Changelist) 
    corpus    = models.CharField(max_length = 100) 
    frequency   = models.IntegerField() 
    asmTollvmIR  = models.OneToOneField(TimeStatObj, related_name = "asmTollvmIR") 
    optimizationPasses = models.OneToOneField(OptimizationPassesTimeStat) 

CompileTimeForm = modelformset_factory(CompileTime) 

我的views.py看起來像這樣。

@csrf_exempt 
def add_form_data(request, formsetclass, custom_logic=None): 
    response_obj = create_response(False) 
    print formsetclass 

    if (request.method == "POST"): 
     try: 
      formset = formsetclass(data=request.POST) 
     except ValidationError: 
      formset = None 

     print formset 
     if (formset and formset.is_valid()): 
      if (custom_logic != None): 
       response_obj = custom_logic(formset, response_obj) 

      response_obj.update({"status": 0}) 
      return json_response_from(response_obj) 
     else: 
      response_obj.update({"status":-1, "response_message": "Form is invalid"}) 
      return json_response_from(response_obj) 

    elif (request.method == "GET"): 
     formset = formsetclass() 
     return render_to_response("dashboard/show_form.html", 
            {"formset": formset}, 
            context_instance=RequestContext(request)) 

@csrf_exempt 
def add_compile_time_stats(request): 
    return add_form_data(request, CompileTimeForm, save_form) 

模板看起來像這樣。

<form action="/dashboardMain/add_changelist" method="post"> 
    {{ formset.management_form }} 
    <table> 
     {% for form in formset.forms %} 
      {{ form }} 
     {% endfor %} 
    </table> 
    <input type="submit" value="Send" /> <input type="reset"> 
</form> 

回答

0

我意識到的問題是我沒有從add_compile_time_stats函數返回。添加return語句導致問題消失。 :) 應該看過那個。