On Thu, Jan 28, 2010 at 09:35:50PM -0300, Juan Manuel Santos wrote: > class File(InheritableSQLObject): > name = StringCol() > root = ForeignKey("Directory", default=None) > > class Directory(File): > dirs = MultipleJoin("Directory", joinColumn="root_id") > files = MultipleJoin("File", joinColumn="root_id") > > sqlobject.dberrors.OperationalError: no such column: root_id > > 1/QueryR : SELECT id FROM directory WHERE root_id = (1)
Table 'directory' doesn't have root_id, only 'file' as it. The problem is that InheritableSQLObject is rather limited thing. These limitations are documented: http://sqlobject.org/Inheritance.html#limitations-and-notes The problem you are stumbled upon is "Inheritance works in two stages - first it draws the IDs from the parent table and then it draws the rows from the children tables. The first stage could fail if you try to do complex things. For example, Children.select(orderBy=Children.q.column, distinct=True) could fail because at the first stage inheritance generates a SELECT query for the parent table with ORDER BY the column from the children table." Your code choked on the first stage while trying to SELECT IDs from the child table using a column that only exists in the parent. You can try simple Python inheritance instead: class File(SQLObject): name = StringCol() root = ForeignKey("Directory", default=None) class Directory(File): dirs = MultipleJoin("Directory", joinColumn="root_id") files = MultipleJoin("File", joinColumn="root_id") This works by copying all parent columns to the child table. Oleg. -- Oleg Broytman http://phd.pp.ru/ p...@phd.pp.ru Programmers don't die, they just GOSUB without RETURN. ------------------------------------------------------------------------------ The Planet: dedicated and managed hosting, cloud storage, colocation Stay online with enterprise data centers and the best network in the business Choose flexible plans and management services without long-term contracts Personal 24x7 support from experience hosting pros just a phone call away. http://p.sf.net/sfu/theplanet-com _______________________________________________ sqlobject-discuss mailing list sqlobject-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/sqlobject-discuss