1

おそらく非常に基本的なことで苦労しています。大学のデータベースアプリケーション用にマーク付きのフォームを生成する必要があります。各モジュールの各生徒には、モジュールのすべてのマークを保存する「パフォーマンス」を取得したクラスがあります。さまざまな評価があり、パフォーマンスクラスはそれらの平均を計算します。

たとえば、最初の評価のすべてのマークを入力できる必要があります。これは、動的に生成されたDjangoフォームをテンプレートのテーブルとして使用して行いました。

{% for performance in performances %}
    <tr>
        <td>
            {{ performance.student }}
        </td>
        <td>
            {% if to_mark == 1 %} 
                <input type="text" class="input-mini" name="{{ student.student_id }}" value="{{ performance.assessment_1 }}">
            {% else %}
                {{ performance.assessment_1 }}
            {% endif %}
        </td>

       And the same for the other assessments (to_mark gets passed on by views.py to indicate which assessments needs to be marked here)

Inlineformfieldsを使用できなかったため、フォームを動的に生成してJavascriptで検証することにしました。これは、検証が単純であり(1〜100の数値である必要がある)、Javascriptを使用して平均を計算するためです。急いで。

私の問題は、Javascriptについての手がかりがないことです。すべてのチュートリアル(この例http://www.w3schools.com/js/js_form_validation.asp)では、Javascript関数のフォームフィールドの名前を使用していますが、私の場合、その名前は動的に生成されるため、アクセスできますviews.pyで簡単に:

if student.student_id in request.POST:
    tmp = request.POST[student.student_id]
    try:
        mark = int(tmp)
        if mark in range(0, 100):
        performance = Performance.objects.get(student=student, module=module)
        if to_change == 1:
            performance.assessment_1 = mark
       ...and so on for the other assessments
    except ValueError:
        pass (in case someone accidentally enters a letter and not a number)

Javascriptを使用してフォームフィールドをアドレス指定する方法はありますか?または、student_idを名前として読み取って読み取るのとは異なるアプローチを使用する必要がありますか?どうすればそれができますか?

ありがとう、トビ

4

1 に答える 1

1

JavaScript を使用してフォーム フィールドにアクセスするには、少なくとも 3 つの方法があります。

ID、CSS クラス、または DOM トラバーサル。JavaScript に慣れていない場合は、https ://code.google.com/p/django-ajax-forms/ のような Django に適したクライアント側のフォーム バリデーターを見つけることをお勧めします。

于 2013-03-14T19:13:55.390 に答える