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.