2013-05-12 1 views
0

django formset을 사용하는 데 문제가 있습니다. POST 요청을하면 폼에 ValidationErrors가 발생합니다. 나는 다른 게시물을 보았지만 답은 나에게 도움이되지 못했다. 어떤 아이디어?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 문을 추가하면 문제가 사라졌습니다. :) 이전에 살펴 봤어야합니다.

관련 문제