0

私は次のことをしたいと考えています: ユーザーはeventrecords、以前に作成したすべてを 1 つのページに表示し、それらを編集できます。

私が抱えている問題は、彼がそれらの 1 つ以上を編集して無効な選択を入力すると、検証エラーが表示されないことです。代わりに、(コード内にある場合) 何も起こらないか、if changed_events.is_valid()「ValueError at /coding/assignment/3/ The EventRecord could not be changed because the data did not validate.」というメッセージが表示されます。ユーザーが有効なデータを入力した場合、保存は問題なく機能します。

新しいエントリを作成するときに既に機能している方法で、ページに検証エラーを表示したいと思います。

私のコードに従ってください:

ビュー (かなり複雑で、他のすべてが正常に機能しているため、ビュー全体を投稿していません。これらは、機能していない部分の原因です):

##### 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()ですか? 私は本当に何をすべきかわかりません。どんな助けでも大歓迎です!

4

1 に答える 1