2009-09-26 2 views
1

Я хочу отправить форму (по почте), которая будет отправлять N (неизвестные) user_id's. Могу ли я получить эти идентификаторы в виде списка?django. Можно ли получить список в качестве параметра?

Например

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']: 

возможно?

Я ищу наилучший принятый способ.

ответ

5

Вы должны прочитать о QueryDict objects:

>>> q = QueryDict('a=1&a=2&a=3') 
>>> q.lists() 
[('a', ['1', '2', '3'])] 
+0

Сделает, благодаря – Tom

2

Очень близко. Параметры POST на самом деле содержатся в запросе QueryDict object.

def getids(request): 
    if request.method == 'POST': 
     for field in HttpRequest.POST: 
      // Logic here 
+0

Спасибо! Я посмотрю на это. – Tom

2

Если вы отправляете много одинаковых форм в одной странице вы можете найти Formsets быть, что вы хотите.

Затем вы можете создать одну форму для идентификатора пользователя, а затем повторить ее в форме. Затем вы можете перебрать форму, чтобы прочитать результаты.

+0

Да, я рассматривал этот подход, но как новичок с крайним сроком, я отказался от него. Вероятно, в будущем будут использовать формы. Благодаря ! – Tom

0

Вы можете создать поля формы с некоторым префиксом, который вы можете фильтровать позже.

Допустим, вы используете поля формы с именами, как UID-1, UID-2, ... UID-н

Затем, когда вы обрабатывать POST вы можете сделать:

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

Это будет дайте вам значения полей в POST, которые начинаются с «uid» в списке.

+0

Это должно быть x [: 3], а не x [: 2] –

+0

yeap, извините, мой плохой –

0

QueryDictgetlist - это то, что вы ищете.

Из документов:

>>> q = QueryDict('a=1', mutable=True) 
>>> q.update({'a': '2'}) 
>>> q.getlist('a') 
['1', '2'] 
Смежные вопросы