Line 128 of gql.py gives a syntax error: fields=[args['polymodel']]+[field fof field in fields]
I took a guess that this was supposed to give a list of fields from both the base table and the table being created in, and replaced it with this instead: fields = map(lambda x: args['polymodel'][x], args['polymodel'].fields) +list(fields) This change allowed the table to be constructed with fields from both itself and its base class. Unfortunately, this gives an error when _create is called on the table (line 137), due to duplicate properties from the base table. Here's the trace: Traceback (most recent call last): File "C:\Users\Dave\Documents\Python\web2py\gluon\restricted.py", line 188, in restricted exec ccode in environment File "C:\Users\Dave\Documents\Python\web2py\applications\welcome/ models/db.py", line 80, in <module> db.define_table('person',Field('first_name'), polymodel=db.contact) File "C:\Users\Dave\Documents\Python\web2py\gluon\contrib\gql.py", line 137, in define_table t._create(polymodel=args.get('polymodel',None)) File "C:\Users\Dave\Documents\Python\web2py\gluon\contrib\gql.py", line 250, in _create self._tableobj = classobj(self._tablename, (polymodel._tableobj, ), myfields) File "C:\Program Files (x86)\Google\google_appengine\google\appengine \ext\db\polymodel.py", line 125, in __init__ super(PolymorphicClass, cls).__init__(name, bases, dct, map_kind=False) File "C:\Program Files (x86)\Google\google_appengine\google\appengine \ext\db\__init__.py", line 418, in __init__ _initialize_properties(cls, name, bases, dct) File "C:\Program Files (x86)\Google\google_appengine\google\appengine \ext\db\__init__.py", line 336, in _initialize_properties raise DuplicatePropertyError('Duplicate property: %s' % attr_name) DuplicatePropertyError: Duplicate property: address