2013-05-12 4 views
0

У меня возникли проблемы с использованием набора компонентов django. Выполнение запроса 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) 

My 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. Добавление возвращаемого оператора вызвало проблемы. :) Должен был подумать об этом раньше.