2014-01-29 3 views
0

У меня есть форма с возможностью выбора нескольких флажков, однако, когда я пытаюсь извлечь ключ из словаря в почтовом запросе. Он предоставляет только первое значение массива (может не быть массивом). Я хотел бы получить все точки данных.Как получить все данные из флажков в запросе (django)?

Модели

class CreateJournalistForm(forms.Form): 

    vertical_choices = (('General', 'General'), ('News', 'News'), ('Life', 'Life'), ('Money', 'Money'), ('Sports', 'Sports'), ('Entertainment', 'Entertainment'), ('Dating', 'Dating'), ('Music', 'Music'), ('Humor', 'Humor')) 

    name = forms.CharField(max_length=40, required=False) 
    verticals = forms.MultipleChoiceField(required=True, widget=forms.CheckboxSelectMultiple, choices=vertical_choices) 
    location = forms.CharField(max_length=40) 

Посмотреть

def journalist(request): 
    if request.method == "POST": 
     form = CreateJournalistForm(request.POST) 
     pdb.set_trace() 
     if not form.data['name']: 
      if form.is_valid(): 
       form.save() 
       return HttpResponse("Thank you for applying. We hope to get back to you soon") 
      else: 
       return HttpResponse("Sorry there was an error processing your application. Note: All fields on the application are required.") 
     else: 
      return HttpResponse("Thank you for applying. We hope to get back to you soon") 
    elif request.method == "GET": 
     form = CreateJournalistForm() 
    return render_to_response('journalist_application.html', {'form': form}, context_instance=RequestContext(request)) 

В монтировки запроса отладчик пост обеспечит:

<QueryDict: {u'sample': [u'sdfsdf'], u'first_name': [u'sdfsd'], u'last_name': [u'sdfsf'], u'name': [u''], u'dob': [u'1/22/13'], u'twitter': [u'sdfsdf'], u'ideas': [u'sdfsdf'], u'contribution': [u'sdf'], u'verticals': [u'General', u'News', u'Life', u'Money', u'Sports'], u'google': [u'sdfsdf'], u'location': [u'sdfsdf']} 

Это обеспечивается request.POST в отладчике. Теперь, если я предоставил ключевой запрос.POST ['verticals'], он вернет только один объект в массив. u'Sports '

ответ

1

Я не знаю, почему вы хотите получить доступ к запросу напрямую, так как у вас есть форма и он заботится о преобразовании params в объект.

Однако вы можете использовать request.POST.getlist('verticals'), чтобы получить все значения для ключа.

+0

это работает! как я могу использовать форму для получения данных? – Dap

+0

Вы должны использовать 'form.cleaned_data' для доступа к данным после проверки формы. Все это объясняется в документах форм, так же как и правильный шаблон для отображения ошибок пользователю. –

Смежные вопросы