0

对于我的一个 Django 项目,我的 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中,如果我执行 a getlist,我可以获得各个值,但正如您在上面看到的,每一行都有一组需要单独处理的详细信息。所以我的问题是,我究竟如何获得这些行级数据views.py

4

3 回答 3

2

表格和嵌入在 HTML 中的字段数量与在 Django 中如何访问这些字段(在任何语言中都是如此)有关的绝对为零。

无论name属性是什么,这都是request.POST. 就那么简单。

于 2012-05-10T14:43:40.070 回答
1

如果我理解正确,您是说完全呈现的表单具有三个不同的select输入 named people、三个 namednumber_of_people和三个 named individual_amount

在 HTTP POST 中有一种方法可以从输入中访问多个值的列表,但它实际上只适用于<select multiple="multiple"><input type="checkbox">类似的 - 即来自单个输入的多个值而不是多个具有相同名称的值..

我的建议是,因为您在上面暗示您正在<li>视图代码而不是 ModelForm 中生成表行(与上面的行相反),所以不是使用,等<select name="people">三次。<select name="people_1"><select name="people_2">

然后在您的视图代码中,您可以访问它们request.POST['people_1'],依此类推。

于 2012-05-10T15:36:20.327 回答
1

由于您使用 ModelForm,我猜每个 HTML 行都有一个相应的 DB 行。为每个 DB 行(模型实例)创建一个 ModelForm 并给它一个前缀。或者您可以使用表单集。我的建议:永远不要阅读 request.POST 或 request.GET,使用 form.cleaned_data。

于 2012-05-11T06:52:01.297 回答