Как установить значение параметра по умолчанию в SingleSelectField?
Я новичок в Turbogears 2.3.3 и Toscawidgets 2. Может кто-нибудь сказать мне, как установить значение по умолчанию на основе идентификатора?
URL:... /view? Id = 2
FormWidget:
FruitForm(twf.Form):
class child(twf.TableLayout):
fruit=twf.SingleSelectField(options=DBsession.query(Fruit.id, Fruit.name)
Модель: Фрукты
идентификатор, имя
Контроллер:
@expose ('view')
def view(self, id)
fruit=DBSession.query(Fruit).get(id)
return dict(page='view', value=fruit, form=FruitForm(action='/save')
Шаблон:
<div>${form.display(value=value)}</div>
Вопрос:
Когда URL /view? Id=2, в SingleSelectField, как отобразить фрукт, чей идентификатор равен 2?
Благодарю.
1 ответ
Вероятно, в вашем фрагменте есть две ошибки:
Во-первых, это options
загружаются без использования Deferred
что приводит к выполнению запроса при запуске приложения (при импорте формы), а не при отображении формы, что, вероятно, не то, что вам нужно.
Во-вторых, вы устанавливаете в качестве значения формы сам фрукт, тогда как значение в случае формы должно быть словарем дочерних значений (поскольку у формы фактически есть несколько значений, по одному для каждого дочернего элемента).
Я создал короткий пример на Runnable возможного рабочего решения: http://runnable.com/U-tO4xSN7Ch6wWS7/turbogears-forms-fill-singleselect-value-for-pythonpos