Как установить значение параметра по умолчанию в 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

Другие вопросы по тегам