如何处理django表单中的多个选择元素值

时间:2014-06-18 12:24:18

标签: python django forms

Hello python / django newbie here,我正在尝试构建一个从用户收集短消息并显示它们的应用程序。但首先我必须验证消息,以确认它们不包含非法文本/内容。这是问题,我创建了一个管理部分,管理员登录以验证发布的消息,大约10条等待批准的消息显示如下:

<form method="post" action="">
            {% csrf_token %}
        <input type="submit" value="Save" class="button" />   
        <table>
            <thead>
                <tr>
                    <td width="100">ID</td>
                    <td width="150">Name</td>
                    <td>Content</td>
                    <td>Approve</td>
                </tr>
            </thead>
            <tbody>

                {% for ad in pendingAds %}
                    <tr>
                        <td>{{ad.id}}</td>
                        <td>{{ad.adName}}</td>
                        <td>{{ad.adText}}</td>
                        <td>
                            <select>
                                <option>pending</option>
                                <option>approved</option>
                                <option>disapproved</option>
                            </select>
                        </td>
                    </tr>
                {% endfor %}                                     
            </tbody>
        </table>
        <input type="submit" value="Save" class="button" />   
        </form>

当提交给处理它的视图时,我如何处理每个n个表单选择元素及其各种值

由于

2 个答案:

答案 0 :(得分:0)

你可以这样做:

for key, value in request.POST.iteritems():
    if key.startswith('adstatus_') and value == 'approved':
        id = key.split('_')[1]
        # there you can publish advert

对于这项工作,您需要修改模板:

<select name="adstatus_{{ad.id}}">
    <option value="pending">pending</option>
    <option value="approved">approved</option>
    <option value="disapproved">disapproved</option>
</select>

答案 1 :(得分:0)

我认为,您可以<input name="id" type="hidden" value="{{ ad.id }}">并使用select name="status[{{ ad.id }}]"

然后,在后端,您可以处理请求:

id_list = request.POST.getlist('id')
status_dict = {id:request.POST.get('status[{}]'.format(id)) for id in id_list}