I believe this is fixed in trunk. Can you please try?
On Jan 13, 1:01 pm, Roman Imankulov <[email protected]> wrote: > Hello, > > I'm pretty new in web2py, and I've got a problem while trying to get > the results of 'belongs' query. > > My aim is to use list:reference to make a many-to-one relationship. > Below is a sample controller I tried to run with both web2py-current > and web2py-nightly and with GAE as storage backend. > > def index(): > > # define tables > db.define_table('dog', > Field('name'), > ) > db.define_table('person', > Field('name'), > Field('dogs', 'list:reference dog'), > ) > db(db.dog.id > 0).delete() > db(db.person.id > 0).delete() > > # insert data > dogs = [] > dogs.append(db.dog.insert(name="Pluto")) > dogs.append(db.dog.insert(name="Buddy")) > person_id = db.person.insert(name="Massimo", dogs=dogs) > > # select data > person = db.person(person_id) > dogs = db(db.dog.id.belongs(person.dogs)).select() > return "My dogs: " + ", ".join(d.name for d in dogs) > > Instead of getting "My dogs: Pluto, Buddy", I see an exception > > Traceback (most recent call last): > File ".../web2py/gluon/restricted.py", line 188, in restricted > exec ccode in environment > File ".../web2py/applications/myapp/controllers/default.py:index", > line 28, in <module> > File ".../web2py/gluon/globals.py", line 95, in <lambda> > self._caller = lambda f: f() > File ".../web2py/applications/myapp/controllers/default.py:index", > line 25, in index > File ".../web2py/gluon/dal.py", line 4507, in select > return self.db._adapter.select(self.query,fields,attributes) > File ".../web2py/gluon/dal.py", line 2677, in select > (items, tablename, fields) = > self.select_raw(query,fields,attributes) > File ".../web2py/gluon/dal.py", line 2637, in select_raw > filters = self.expand(query) > File ".../web2py/gluon/dal.py", line 2548, in expand > return expression.op(expression.first, expression.second) > File ".../web2py/gluon/dal.py", line 2595, in BELONGS > return > [GAEF(first.name,'in',self.represent(second,first.type),lambda a,b:a > in b)] > File ".../web2py/gluon/dal.py", line 2325, in represent > obj = long(obj) > TypeError: long() argument must be a string or a number, not 'list' > > Can someone please explain me what I'm doing wrong. Probable it's a > web2py bug, possibly related with Issue 149 <http://code.google.com/p/ > web2py/issues/detail?id=149>. > > Thanks in advance. > Roman

