web2py: условное отображение/скрытие пользовательского виджета формы crud

Я использую пользовательский виджет в своей грубой форме следующим образом:

{{=form.custom.begin}}
{{if condition:}}
    {{=form.custom.widget.field1}}
{{pass}}
{{=form.custom.submit}}
{{=form.custom.end}}

field1 имеет отношение к таблице auth_user. В моем контроллере у меня есть:

form.custom.widget['field1'] = dropdown

if not condition:
    db.admission.field1.readable = db.admission.field1.writable = False
    db.admission.field1.default = auth.user.id

Я хочу, чтобы виджет отображался только тогда, когда условие истинно. Если условие неверно, я хочу, чтобы поле1 по умолчанию использовалось для текущего вошедшего в систему пользователя. Но когда условие неверно, я получаю сообщение об ошибке:

field1 error: value not in database

Что я делаю неправильно?


person naveed    schedule 20.02.2012    source источник


Ответы (1)


Установите атрибуты readable и writable перед созданием формы — в этом случае field1 будет просто автоматически исключен из формы, и вам не придется создавать пользовательскую форму и явно включать/исключать ее.

person Anthony    schedule 21.02.2012