2009-10-14 2 views
0

Я столкнулся с несколькими проблемами с Pylons/Formencode сегодня, когда дело дошло до проверки нескольких флажков. Как немного фона у меня есть что-то вроде этого в моем шаблоне Мако:Пилоны/Formencode с несколькими флажками

<input type="checkbox" name="Project" value="1">Project 1</input> 
<input type="checkbox" name="Project" value="2">Project 2</input> 
<input type="checkbox" name="Project" value="3">Project 3</input> 
<input type="checkbox" name="Project" value="4">Project 4</input> 
<input type="checkbox" name="Project" value="5">Project 5</input> 

В моей схеме проверки у меня было что-то вроде этого (пожалуйста, простите ошибки - я не имею точного кода линии всасывания меня):

Project = formencode.foreach.ForEach(formencode.validators.Int()) 

я ожидал, чтобы получить список назад проверяемых элементов (звучит разумно, не так ли?), но вместо этого я получил список с одного пункта, несмотря на все ящики проверяются. Я делаю это неправильно или это то, что я хочу, чтобы вернуться даже возможно? Я написал хак вокруг него с помощью onclicks для каждого элемента флажка, который добавляет отмеченный элемент в массив, который затем отправляется обратно в формате JSON - это уродливо и больно, потому что я должен сам заполнить все поля, если проверка не удалась.

У кого-нибудь есть идеи?

+0

Хмммм, кажется, что «Set()» достигнет этого. Спасибо за игру! – redrockettt

ответ

2

возможно с помощью formencode.validators.Set:

>>> Set.to_python(None) 
[] 
>>> Set.to_python('this') 
['this'] 
>>> Set.to_python(('this', 'that')) 
['this', 'that'] 
>>> s = Set(use_set=True) 
>>> s.to_python(None) 
set([]) 
>>> s.to_python('this') 
set(['this']) 
>>> s.to_python(('this',)) 
set(['this']) 
0

redrockettt,

Вы смотрели на строку документации к variabledecode? Он предлагает использовать что-то вроде:

<input type="checkbox" name="Project-1" value="1">Project 1</input> 
<input type="checkbox" name="Project-2" value="2">Project 2</input> 
<input type="checkbox" name="Project-3" value="3">Project 3</input> 

Отъезда текста в variabledecode.py или наклеенные here.

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