0

学校に在籍している生徒の例、科目ごとの生徒の成績など、複数のレポートを作成できるアプリケーションがあります。これらのレポートは、非常によく似たレポート作成基準を受け入れます。たとえば、登録された学生は日付範囲の検索基準を取得し、学生の結果は日付範囲とコースを取得します。

これらのレポート検索基準フォームのそれぞれを表すために、WTF フラスコ フォームを使用しています。例:

class StudentsEnrolledReportCriteriaForm(Form):
    reportEndDate = DateField(u'End Date', id='reportEndDate')
    reportStartDate = DateField(u'Start Date', id='reportStartDate')

class StudentResultsReportCriteriaForm(Form):
    reportEndDate = DateField(u'End Date', id='reportEndDate')
    reportStartDate = DateField(u'Start Date', id='reportStartDate')
    course= TextField(u'Course Subject', id='course')

レンダリングの時点で、すべてのレポート基準フォームをレンダリングするテンプレートを 1 つだけ使用したいと考えています。テンプレートを作成してから、フラスコフォームのフィールドをループしてテンプレートに表示することを考えていました。しかし、そうすると、フィールドがテンプレートに表示される順序を管理できなくなります。

例えば:

{% for field in wtfForm._fields %}
//Display each of these fields but since its a dictionary the order will not be same everytime
{% endfor %}

誰かがフラスコフォームフィールドを順序付けられたリストに変換する方法を提案してもらえますか?UIに渡されたときにループしてフィールドをレンダリングできます

4

1 に答える 1

2

最も簡単な方法は、Jinjadictsortフィルターを使用することです。

{% for field in wtfForm._fields|dictsort %}
于 2013-09-13T15:38:51.420 に答える