João Paulo Fernandes Farias wrote:
> Hi!
>
> How do I create tables with cyclic references?
>
> As an example, suppose we have two classes:
>
> class A(SQLObject):
> b = ForeignKey('B')
>
> class B(SQLObject):
> a = ForeignKey('A')
>
>
> /me using turbogears...
>
> I issue a: turbogears-admin.py sql create
>
> It gives me some erros because it tries to create table A but B does not
> exists, so it cannot be referenced.
>
> My suggestion is: Create all tables and then issue all the "alter table
> add constraint" as necessary.
This is kind of hard. Technically you can do it like:
class A(SQLObject):
b = ForeignKey('B')
class B(SQLObject):
pass
def create():
B.createTable()
A.createTable()
B.sqlmeta.addColumn(ForeignKey(name='a', foreignKey='A'),
changeSchema=True)
However, this won't work with sqlobject-admin (and thus
turbogears-admin.py).