Can you show your exact code (the code you showed can't be the code you're 
using, as there would be no add or edit buttons with that code)? It 
definitely works when I try it.

Anthony

On Friday, September 27, 2013 9:22:37 AM UTC-4, Mirko wrote:
>
> Hi Anthony, and thanks for answering.
>
> Actually
>
> db.person._format = lambda row: '%s' % row.name.upper()
>
> doesnt not affect the dropdown list building...
>
>
> I had to add this
>
> db.thing.owner_id.requires=IS_IN_DB(db,'person.id',lambda row: '%s' % 
> row.name.upper())
>
> to have the dropdown list in upper case...
>
> On Friday, September 27, 2013 2:54:17 PM UTC+2, Anthony wrote:
>>
>> The dropdown on a create/edit form is not controlled by the field's 
>> represent attribute -- instead, it is the field's IS_IN_DB validator that 
>> creates the dropdown. So, you could either manually override the default 
>> IS_IN_DB validator, or just change the db.person._format attribute, which 
>> will affect both the represent attribute and the IS_IN_DB validator of 
>> db.thing.owner_id:
>>
>> db.person._format = lambda r: r.name.upper()
>>
>> Note, with the above, you no longer need to explicitly change the 
>> db.thing.owner_id.represent attribute.
>>
>> Anthony
>>
>> On Friday, September 27, 2013 7:30:13 AM UTC-4, Mirko wrote:
>>>
>>> Here's a code example :
>>>
>>> db definition:
>>> db.define_table('person', Field('name'), format='%(name)s')
>>> db.define_table('thing',  Field('name'), Field('owner_id','reference 
>>> person'), format='%(name)s')
>>>
>>> controller:
>>> def manage_test():
>>>     db.thing.owner_id.represent=lambda id, row: '%s' % 
>>> db.person[row.owner_id].name.upper()
>>>     grid=SQLFORM.smartgrid(db.thing)
>>>     return dict(grid=grid)
>>>
>>> db.thing.owner_id.represent is not taken into account when click on add 
>>> or edit button.
>>>
>>> Many thanks!
>>>
>>>
>>> On Friday, September 27, 2013 10:47:38 AM UTC+2, Mirko wrote:
>>>>
>>>> Hi,
>>>>
>>>> I'm using 2.5.1 and I defined a table with a default format which I 
>>>> override in my controller with "represent" attribute and then I call 
>>>> smartgrid on another table referencing the first one.
>>>>
>>>> When I call the controller, smartgrid shows a tabular display and the 
>>>> representation I overrode is taken into account, the correct string 
>>>> representation is displayed, fine.
>>>>
>>>> But when I click on add button or edit button, it appears that the 
>>>> default format is used for the dropdown list.
>>>>
>>>> I've tried many workarounds unsuccessfully, but I'm sure the new 
>>>> representation code line is executed and it looks like on creation or 
>>>> editing smartgrid is reloading the table definition after that...
>>>>
>>>> Or I'm I missing something ?
>>>>
>>>> Thanks in advance!
>>>>
>>>> Mirko
>>>>
>>>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
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 web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to