0

私のDjangoプロジェクトの1つでは、HTMLページにフォームが含まれており、フォームにはテーブルが含まれています。フォームの構造は次のとおりです。

<form name="bill" action="" method="post">
    <ul>
        <li>
            <label for="id_date">Date </label>
            <input type="text" name="date" id="id_date" />
        </li>
        <li>
            <label for="id_description">Description </label>
            <input id="id_description" type="text" name="description" maxlength="300" />
        </li>
        <li>
            <label for="id_amount">Total Amount </label>
            <input type="text" name="amount" id="id_amount" />
        </li>
        <li>
            <label for="id_debtors">Split Among </label>
            <table class="unequal_split">
                <thead>
                    <th>Name</th>
                    <th>Paid For</th>
                    <th>Amount</th>
                </thead>
                <tbody>
                        <tr>
                            <td> 
                                <select name="people">
                                    <option value="xx">XX</option>
                                    <option value="yy">YY</option>                                        
                                    <option value="zz">ZZ</option>
                                </select>
                            </td>
                            <td>
                                <select name="number_of_people">
                                    <option value="1">1 person</option>
                                    <option value="2">2 people</option>
                                    <option value="3">3 people</option>
                                    <option value="4">4 people</option>
                                    <option value="5">5 people</option>
                                </select>
                            </td>
                            <td>
                                <input type="text" name="individual_amount" />
                            </td>
                        </tr>                        
        <li>
            <label for="save"></label>
            <button id="save" type="submit">Save</button>
        </li>
    </ul>
</form>

上に表示されているテーブルの行は3回繰り返されます。

request.POST、を実行するgetlistと、個々の値を取得できますが、上記のように、各行には個別に処理する必要のある詳細のセットが1つあります。だから私の質問は、この行レベルのデータをどのように正確に取得するのviews.pyですか?

4

3 に答える 3

2

テーブルと、HTML に埋め込まれているフィールドの数は、Django でそれらのフィールドにアクセスする方法とはまったく関係ありません (その点については、任意の言語で)

属性が何であれname、それが の鍵ですrequest.POST。そのような単純な。

于 2012-05-10T14:43:40.070 に答える
1

ModelFormを使用しているので、すべてのHTML行に対応するDB行があると思います。すべてのDB行(モデルインスタンス)のModelFormを作成し、プレフィックスを付けます。または、フォームセットを使用できます。私のアドバイス:request.POSTまたはrequest.GETからは絶対に読まないで、form.cleaned_dataを使用してください。

于 2012-05-11T06:52:01.297 に答える
1

あなたの理解が正しければ、完全にレンダリングされたフォームには、named という名前の 3 つの異なる入力select、namedpeopleの 3 つの入力、named の 3 つの入力があると言っています。 number_of_peopleindividual_amount

HTTP POST には、入力から複数の値のリストにアクセスする方法がありますが、実際には、などにのみ適用されます。<select multiple="multiple">つまり<input type="checkbox">、同じ名前の複数ではなく、単一の入力からの複数の値です。

<li>ModelFormではなくビューコードで(上記のsとは対照的に)テーブル行を生成していることを上記で暗示しているので、私が提案するのは、、 などを<select name="people">3回使用する代わりに.<select name="people_1"><select name="people_2">

次に、ビューコードでそれらにアクセスできますrequest.POST['people_1']

于 2012-05-10T15:36:20.327 に答える