2013-08-14 6 views
0

У меня есть SQLFORM.factory на странице, которую я использую (среди прочего), обновление определенного поля в таблице. Это поле является выпадающим столом я сделал вот такweb2py SQLFORM.factory значения по умолчанию не обновляются

Field('visibility',requires=IS_IN_SET(['everyone','subscribers','friends','nobody'])) 

Так поле в SQLFORM.factory выглядит так же. Разница в том, что я хочу, чтобы значение по умолчанию в SQLFORM.factory являлось текущим значением этого поля в конкретной таблице. по умолчанию. Я делаю запрос на нужную запись в таблице, выбираю это поле, и это становится моим значением по умолчанию, выбранным параметром. Совершенствуйте первый раз, когда вы загружаете его. я делаю обновление после того, как форма принимает как так и обновление работает функционально:

if subForm.accepts(request,session,dbio=True): 
    if myForm.vars.visible != theDefault: 
     db(row).update(visibility = subForm.vars.visibility) 

Если вы отправляете страницу выбранного варианта не является текущим значением этого поля в таблице, это всегда один это было предыдущая. Если я посмотрю на мою администрацию базы данных, таблица обновилась отлично, но я не смог выбрать правильный вариант для выбора в качестве моего значения по умолчанию. Если мой дефолт был «все», а затем я выбираю и отправляю «друзей», то выбранный, когда перезагрузка страницы после отправки все равно «все». Если я затем выберем и отправлю «никто», после обновления это «друзья».

Если это помогает, я показываю, что этот SQLFORM.factory находится в и iFrame как часть более крупной страницы.

ответ

0

После многих часов, вот как вы это делаете (Сорта hackey, но она работает)

#This is a kludge to get the right default visibility selected 
if request.vars.visible == None: 
    visibleDefault = theDefault 
else: 
    visibleDefault = request.vars.visible 

form = SQLFORM.factory(
     FIELD(Field('visible',requires=IS_IN_SET(['everyone','subscribers','friends','nobody'],zero=None),default=visibleDefault), 
     table_name='table') 

if form.accepts(request,session,dbio=True): 
    if form.vars.visible != theDefault: 
     db(row).update(visibility = form.vars.visible) 
Смежные вопросы