Thanks Anthony,

I did it like this: 
    for option in form.elements('select[name=event_class_id] option'):
        if option['_value'] and db.event_class(option['_value']).repeated:
            option.update(_class='repeated')

Database query for each option is not problematic, because i don't have so 
much options, 10 at most.

Thanks!


On Friday, April 26, 2013 1:38:11 PM UTC+2, Anthony wrote:
>
> If you are using SQLFORM to generate the form, one option is to manipulate 
> the form DOM after it has been created:
>
> form = SQLFORM(...)
> [op.update(_class='repeated') for op in 
> form.elements('select[name=event_class_id] 
> option')
>     if op['_value'] and db.event_class(op['_value']).repeated]
>
> form.elements('select[name=event_class_id] option') returns a list of all 
> the option elements within the event_class_id select, and the list 
> comprehension updates the _class attribute if the value stored in the 
> option element is associated with an event_class record with a True value 
> in the "repeated" field. Warning: that will do a db query for each option 
> in the list.
>
> Another option would be to create a custom widget for the field. You can 
> base it on the 
> OptionsWidget<https://code.google.com/p/web2py/source/browse/gluon/sqlhtml.py#224>.
>  
> You can subclass that class and replace the widget method.
>
> Anthony
>
> On Friday, April 26, 2013 5:47:26 AM UTC-4, Domagoj Kovač wrote:
>>
>> Hi,
>>
>> i have a question. I have a IS_IN_DB validator.
>>     fields.append(Field("event_class_id", "reference event_class",
>>                         required=True,
>>                         requires=IS_IN_DB(db, 'event_class.id', 
>> '%(name)s', zero=T("-- Odaberite --")),
>>                         label=LABEL("Vrsta događaja", _for=
>> "event_value_event_class_id")))
>>
>> In my event class i have a structure like: 
>> db.define_table('event_class',
>>                 Field('name', 'string',
>>                     required=True,
>>                     requires=IS_NOT_EMPTY(),
>>                     label=LABEL(T("Naziv"), _for="event_class_name")),
>>                 Field('repeated', 'boolean',
>>                       label=LABEL(T("Ponavljanje"), _for="event_repeated"
>> )),
>>                 )
>>
>> Repeated field is a field that tells me weather do display one field on a 
>> form. I want to have HTML like this. 
>> <select>
>>     <option value="1">Name</option>
>>     <option value="2">Name 2</option>
>>     <option value="3">Name 3</option>
>>     <option value="4" class="repeated">Name 4</option>
>>     <option value="5">Name 5</option>
>> </select>
>> so when users selects a value i can check if i need to display repeated 
>> field based on the class
>>
>> Is this possible somehow?
>>
>

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to