Django如何处理来自多行表的表单数据?

Django如何处理来自多行表的表单数据?,django,django-forms,Django,Django Forms,对于我的一个Django项目,我的HTML页面包含一个表单,而表单又包含一个表。表格的结构如下所示: <form name="bill" action="" method="post"> <ul> <li> <label for="id_date">Date </label> <input type="text" name="date" id="id_date

对于我的一个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>

  • 日期
  • 描述
  • 总金额
  • 分成 名称 支付 数量 XX YY ZZ 1人 两个人 三个人 4个人 5个人
  • 拯救
上面看到的表行重复三次


request.POST
中,如果我执行
getlist
,我可以获得各个值,但正如您在上面看到的,每行都有一组需要单独处理的详细信息。所以我的问题是,如何在
views.py
中准确地获取行级数据

表格和HTML中嵌入的字段数量与Django(在任何语言中)如何访问这些字段无关


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

表格和HTML中嵌入的字段数量与这些字段在Django(任何语言)中的访问方式无关


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

如果我理解正确,您是说完全呈现的表单有三个不同的
select
输入名为
,三个名为
人数
,三个名为
个人金额

HTTP POST中有一种方法可以从输入中访问多个值的列表,但它实际上只适用于
等,即,从单个输入中访问多个值,而不是使用相同名称的多个值

我的建议是,由于您在上面暗示您正在视图代码中而不是在模型表单中生成表行(与上面的
  • 三次,不如使用


    然后在您的查看代码中,您可以按请求访问它们。发布['people\u 1']
  • 等等。

    如果我理解正确,您是说完全呈现的表单有三个不同的
    选择输入,分别命名为
    ,三个命名为
    人数
    ,三个命名为
    个人金额

    HTTP POST中有一种方法可以从输入中访问多个值的列表,但它实际上只适用于
    等,即,从单个输入中访问多个值,而不是使用相同名称的多个值

    我的建议是,由于您在上面暗示您正在视图代码中而不是在模型表单中生成表行(与上面的
  • 三次,不如使用


    然后在您的视图代码中,您可以作为请求访问它们。POST['people\u 1']
  • 等等。

    由于您使用ModelForm,我猜每个HTML行都有相应的DB行。为每个DB行(模型实例)创建一个ModelForm,并为其指定一个前缀。也可以使用表单集。我的建议是:永远不要从request.POST或request.GET读取数据,而要使用form.cleaned_数据。

    因为您使用的是ModelForm,我想每个HTML行都有一个对应的DB行。为每个DB行(模型实例)创建一个ModelForm,并为其指定一个前缀。也可以使用表单集。我的建议是:永远不要从request.POST或request.GET中读取数据,使用form.cleaned_数据。

    您是否自己创建和字段?如果是的话,你就不会用django的方式。使用表单库和模型表单。不要访问request.POST,使用form.u数据。此评论与手头的问题有何关联?在任何情况下,要回答您的问题,前三个列表项来自ModelForm,与表相关的最后一个li是手动创建的。好的,您使用ModelForm。是的,这是相关的。因为如果使用表单库,则只能使用form.u数据。我在下面添加了一个答案。您是否自己创建和字段?如果是的话,你就不会用django的方式。使用表单库和模型表单。不要访问request.POST,使用form.u数据。此评论与手头的问题有何关联?在任何情况下,要回答您的问题,前三个列表项来自ModelForm,与表相关的最后一个li是手动创建的。好的,您使用ModelForm。是的,这是相关的。因为如果使用表单库,则只能使用form.u数据。我在下面添加了一个答案。那么我该怎么做呢?该表格应发送如下数据:[日期、描述、金额,[[XX,1人,10],[YY,3人,30],[ZZ,1人,10]]。我如何准确地访问来自表的最后一个项目(它又包含三个其他项目/行)?再次