great! thanks a lot!

On Tue, Nov 10, 2009 at 6:20 PM, mdipierro <mdipie...@cs.depaul.edu> wrote:
>
> It seems I was wrong. This is not possible but not diffciult to
> implement. Give me a couple of days.
>
> On Nov 10, 10:15 am, Frederik Wagner <fner...@googlemail.com> wrote:
>> thanks for the fast reply, but it does not work for me
>>
>>
>>
>> On Tue, Nov 10, 2009 at 3:45 PM, mdipierro <mdipie...@cs.depaul.edu> wrote:
>>
>> > Yes you can do it with a bit of extra work:
>>
>> > db.define_table('person',Field('name'))
>> > db.define_table('dog',Field('name'),Field('owner',db.person))
>> > db.define_table('walk',Field('dog',db.dog),Field('when','datetime'))
>>
>> > db.dog.owner.requires = IS_IN_DB(db,'person.id','%(name)s')
>> > class ComputedDogAttributes:
>> >    def owner_name(dog): return dog.owner.name
>> > db.dog.virtualfields.append(ComputedDogAttributes())
>> > db.walk.dog.requires = IS_IN_DB(db,'dog.id','%(name)s by %(owner_name)
>> > s')
>>
>> > Actually I have not tried it. If you do please let us know.
>>
>> trying to insert a walk (after inserting a person and a walk), gives
>>
>> Traceback (most recent call last):
>>   File "/root/web2py/gluon/restricted.py", line 184, in restricted
>>     exec ccode in environment
>>   File "/root/web2py/applications/test/controllers/appadmin.py", line
>> 304, in <module>
>>   File "/root/web2py/gluon/globals.py", line 103, in <lambda>
>>     self._caller = lambda f: f()
>>   File "/root/web2py/applications/test/controllers/appadmin.py", line
>> 123, in insert
>>     form = SQLFORM(db[table], ignore_rw=ignore_rw)
>>   File "/root/web2py/gluon/sqlhtml.py", line 613, in __init__
>>     inp = self.widgets.options.widget(field, default)
>>   File "/root/web2py/gluon/sqlhtml.py", line 199, in widget
>>     options = requires0.options()
>>   File "/root/web2py/gluon/validators.py", line 346, in options
>>     self.build_set()
>>   File "/root/web2py/gluon/validators.py", line 333, in build_set
>>     records = self.dbset.select(*self.fields, **dd)
>>   File "/root/web2py/gluon/sql.py", line 2901, in select
>>     rows = response(query)
>>   File "/root/web2py/gluon/sql.py", line 2896, in response
>>     db._execute(query)
>>   File "/root/web2py/gluon/sql.py", line 846, in <lambda>
>>     self._execute = lambda *a, **b: self._cursor.execute(*a, **b)
>> OperationalError: no such column: dog.owner_name
>>
>> Actually, why is it not possible to do a
>> db.walk.dog.requires = IS_IN_DB(db,'dog.id','%(name)s by %(owner.name)s')
>> directly?
>>
>> probably I'm missing some python knowledge.
>>
>> Thanks
>> Frederik
>>
>>
>>
>> > On Nov 10, 4:35 am, Frederik Wagner <fner...@googlemail.com> wrote:
>> >> Hi .*,
>>
>> >> is there a possibility in the Validator IS_IN_DB to have the display
>> >> string show attributes from multiple (joined) tables?
>> >> E.g.: If I  say somthing like
>>
>> >> IS_IN_DB( db( (table1.id == table2.id_table1) , 'table1.id',
>> >> '%(table1.attribute)s %(table2.attribute)s')
>>
>> >> It tried somthing like this, but the problem is, that the placeholder
>> >> are always assumed to be attributes of the table used in the second
>> >> parameterfield, here 'table1'. Such that the used attributes are
>> >> 'table1.table1.attribute' and 'table1.table2.attribute', which is
>> >> clearly an error.
>>
>> >> I hope I could make the problem clear?
>>
>> >> Thanks a lot for help.
>> >> Bye!
>> >> Frederik
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To post to this group, send email to web2py@googlegroups.com
To unsubscribe from this group, send email to 
web2py+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to