2013-08-18 2 views
0

다음을 수행하고 싶습니다. 사용자는 이전에 한 페이지에 작성한 모든 eventrecords을보고 편집 할 수 있습니다.변경된 쿼리 세트가 작동하지 않는지 확인 - 장고

내가 가진 문제는 그가 하나 이상을 편집하여 잘못된 선택을 입력해도 유효성 오류가 표시되지 않는다는 것입니다. 대신, 아무 것도 발생하지 않거나 (코드에 if changed_events.is_valid()이있는 경우) 또는 "ValueError at/coding/assignment/3/ 데이터를 검증하지 못하여 EventRecord를 변경할 수 없습니다." 사용자가 유효한 데이터를 입력하면 저축은 잘됩니다.

새 항목을 만들 때 이미 작동하는 방식으로 페이지에 유효성 검사 오류를 표시하고 싶습니다.

뷰 (그것은 매우 복잡하고 다른 모든 것이 잘 작동 나는, 내 전경을 게시하고 있지 않다 작동하지 않는 것이이 부분에 대한 책임이 있습니다.) :

##### Show already created events on the page 
    current_article = paginator.page(current_page).object_list[0] 
    EventFormSet = modelformset_factory(EventRecord, can_delete=True, exclude=('coder','article','url','last_updated'), extra=0) 
    event_queryset = EventRecord.objects.filter(article__id=current_article.id).filter(coder=request.user.id) 
    coded_events = EventFormSet(queryset=event_queryset, prefix="event_form") 


elif 'save_changes' in request.POST: 
      formset = CodingFormSet(prefix="coding_form") 
      changed_events = EventFormSet(request.POST, prefix="event_form") 
      # if changed_events.is_valid(): 

      instances = changed_events.save() 


      try: 
       history_record = ArticleHistory.objects.filter(article__id=paginator.page(current_page).object_list[0].id).filter(coder=request.user.id)[0] 
       history_record.last_updated = datetime.datetime.now() 
       history_record.save() 
      except: 
       history_form = ArticleHistoryForm() 
       article_history = history_form.save(commit=False) 
       article_history.article = paginator.page(current_page).object_list[0] 
       article_history.coder = request.user 
       article_history.last_updated = datetime.datetime.now() 
       article_history.save() 



      redirect_to = "?page=%s" % current_page 
      return HttpResponseRedirect(redirect_to) 
내 코드에 따라

템플릿 :

{% for eventrecord in coded_events %} 



      {{ eventrecord.id }} 
      <div class="form-container"> 
       {% if eventrecord.non_field_errors %} 
       {{form.non_field_errors}} 
       {%endif%} 

       {% for field in eventrecord %} 
       {% if field.errors %} 
        <li>{{ field.errors|striptags }}</li> 
       {% endif %} 
       {% endfor %} 

사람 내가 잘못 무엇을 생각 했습니까? Django는 뭔가 잘못되었다고 인식하고 있습니다 만 왜 템플릿에 표시되지만 오류 페이지가 생성됩니까? is_valid()을 포함해도 아무런 이유가 없나요? 나는 정말로 내가 무엇을 해야하는지 모릅니다. 어떤 도움이라도 대단히 감사합니다!

답변

0

오,이 사람은 어리 석다 : 내 질문을 게시 한 직후에 답변을 보았습니다.

여기에 잘못된 내용은 다음과 같습니다

의 검색어는 coded_events로 템플릿에 전달했다. save_changes 작업 중에이 이름을 changed_events으로 변경했으며 유효성 검사 오류의 경우 템플릿으로 다시 전달할 수 없습니다.

문제를 해결 한 후에도 문제가 없습니다.