3

我想提交一个表单(通过 POST),它将提交 N(未知)user_id。我可以让视图接收这些 id 作为列表吗?

例如

def getids(request,list):

   for id in list:
       usr = User.objects.get(pk=id);
       //do something with it.
       usr.save()

for id in request.POST['id']:

甚至可能?

我正在寻找最好的接受方式。

4

5 回答 5

5

您应该阅读QueryDict 对象

>>> q = QueryDict('a=1&a=2&a=3')
>>> q.lists()
[('a', ['1', '2', '3'])]
于 2009-09-26T23:02:33.220 回答
2

很接近。POST 参数实际上包含在请求中的QueryDict 对象中。

def getids(request):
    if request.method == 'POST':
        for field in HttpRequest.POST:
            // Logic here
于 2009-09-26T23:03:37.913 回答
2

如果您在一个页面中提交许多相同的表单,您可能会发现Formsets是您想要的东西。

然后,您可以为用户 ID 制作一个表单,然后在 Formset 中重复它。然后,您可以遍历表单集以读取结果。

于 2009-09-27T09:06:51.270 回答
0

您可以创建带有一些前缀的表单字段,您可以稍后过滤。

假设您使用名称为 uid-1、uid-2、... uid-n 的表单字段

然后,当您处理 POST 时,您可以执行以下操作:

uids = [POST[x] for x in POST.keys() if x[:3] == 'uid']

这将为您提供 POST 中以列表中的“uid”开头的字段的值。

于 2009-09-29T18:57:57.433 回答
0

QueryDictgetlist你要找的。

从文档:

>>> q = QueryDict('a=1', mutable=True)
>>> q.update({'a': '2'})
>>> q.getlist('a')
['1', '2']
于 2015-11-02T21:34:42.390 回答