Если я правильно понимаю, вы хотите отобразить все регионы в форме множественного выбора, которая будет использоваться для возврата выбранных регионов без изменения базы данных?
Вы должны сначала выбрать все регионы из вашей базы данных (я полагаю, вы уже сделали), а затем поместить их в форму. Например, если в вашей таблице regions
есть поле name
:
rows= db().select(db.regions.ALL)
components = [LI(INPUT(_name=i.name, _type="checkbox"), i.name) for i in rows]
return dict(form=FORM(INPUT(_type="submit"),
*components),
_method="post", _action="")
вернет форму, которую можно вставить в шаблон. Вы можете использовать что-то кроме LI, например, P или BR, вы также можете добавить лучшее форматирование (таблица, ...), но это только идея.
Это была первая часть. Чтобы извлечь выбранную информацию, вы можете использовать ее в функции вашего контроллера:
def index():
# Prepare the form
rows = db().select(db.regions.ALL)
components = [LI(INPUT(_name=i.name, _type="checkbox"), i.name) for i in rows]
form=FORM(INPUT(_type="submit"),
*components,
_method="post", _action="")
if request.post_vars.get("submit"):
# Check the answer
# ... more code ...
redirect(URL(r=request, f="show", args=request.args))
return dict(form=form)
def show():
# ... more code ...
(вы должны проверить состояние после if, я не уверен на 100%). index()
будет вызываться в первый раз для отображения формы и во второй раз, когда пользователь нажал кнопку «Отправить». Во второй раз он должен ввести условие, сделать все, что вам нужно сделать (получить значения региона), и перенаправить вывод на другую страницу (здесь функция show()
).
Я просто даю вам общую идею, но вам действительно нужно обратиться к учебнику и часто задаваемым вопросам web2py, чтобы получить представление об этой платформе.