I had already try with the nightly built for testers version, but not with trunk. Thank you very much!
On 27 dic, 14:01, mdipierro <[email protected]> wrote: > this has been fixed in trunk. I will post a new version soon. > > On Dec 27, 7:03 am, Lisandro <[email protected]> wrote: > > > I've been working with web2py for a while. Lastnight I updated to last > > version, and my webforms collapsed (those constructed with > > SQLFORM.factory). > > > More precisely, the problem appeared in the forms where I mix some > > existing fields of the database with other fields defined on the run, > > just like this example: > > ------------------------------------------------------------------------------ > > form = SQLFORM.factory( > > db.mytable.oneexistingfield, > > Field('nonexistingfield', 'string'), > > db.mytable.anotherexistingfield) > > ------------------------------------------------------------------------------ > > > Anyway. After some minutes searching for the cause of the problem, > > I've decided to start from scratch with an example. I downloaded the > > version 1.91.4 (I'm using Ubuntu 10.04). I created a new application. > > > The model (very simple, I took it from web2py examples): > > ------------------------------------------------------------------------------ > > db.define_table('person', > > Field('name')) > > db.define_table('dog', > > Field('name'), > > Field('owner', db.person)) > > ------------------------------------------------------------------------------ > > > Then, I wrote the "index" function on "default.py" controller: > > ------------------------------------------------------------------------------ > > def index(): > > form = SQLFORM.factory(db.dog) > > dogs = db(db.dog.id>0).select() > > return dict(form=form, dogs=dogs) > > ------------------------------------------------------------------------------ > > In the view I just added {{=form}} and {{=BEAUTIFY(dogs)}}, just to > > see the result of the function. > > > When I try to run the function, I receive the following error: > > ------------------------------------------------------------------------------ > > Traceback (most recent call last): > > File "/home/lisandro/pylicencias/gluon/restricted.py", line 188, in > > restricted > > exec ccode in environment > > File "/home/lisandro/pylicencias/applications/prueba/controllers/ > > default.py", line 20, in <module> > > File "/home/lisandro/pylicencias/gluon/globals.py", line 95, in > > <lambda> > > self._caller = lambda f: f() > > File "/home/lisandro/pylicencias/applications/prueba/controllers/ > > default.py", line 14, in index > > form = SQLFORM.factory(db.dog) > > File "/home/lisandro/pylicencias/gluon/sqlhtml.py", line 1182, in > > factory > > return SQLFORM(SQLDB(None).define_table(table_name, *fields), > > File "/home/lisandro/pylicencias/gluon/dal.py", line 3314, in > > define_table > > t._create_references() > > File "/home/lisandro/pylicencias/gluon/dal.py", line 3607, in > > _create_references > > rtable = self._db[rtablename] > > File "/home/lisandro/pylicencias/gluon/dal.py", line 3335, in > > __getitem__ > > return dict.__getitem__(self, str(key)) > > KeyError: 'person' > > ------------------------------------------------------------------------------ > > > The SAME code, but using SQLFORM(db.dog) instead of > > SQLFORM.factory(db.dog), works just fine. > > The SAME code, but with an older version of web2py, works just fine. > > What happened to SQLFORM.factory? Some bug? Or it's just me that I'm > > doing something wrong? > > > Thanks in advance. > >

