you need to set "cascade='all, delete-orphan' on the relation referencing the AssociationProxy. Some docs on ORM cascades are in the ORM tutorial as well as http://www.sqlalchemy.org/docs/04/session.html#unitofwork_cascades .
On May 21, 2008, at 12:14 PM, kremlan wrote: > > I've posted the following question on the Elixir group and they sent > me here. > > My setup > > ## > # Tables > ## > roles = Table('roles', meta, > Column('id', Integer, primary_key=True), > Column('name', String(25)) > ) > > users = Table('users', meta, > Column('id', Integer, primary_key=True), > Column('username', String(125)), > Column('password', String(125)), > .... > ) > > users_roles = Table('users_roles', meta, > Column('user_id', Integer, primary_key=True), > Column('role_id', Integer, primary_key=True), > .... > ForeignKeyConstraint(['user_id'], ['users.id']), > ForeignKeyConstraint(['role_id'], ['roles.id']) > ) > > ## > # Elixir models > ## > > class UserRole(Entity): > using_options(tablename='users_roles', autoload=True) > user = ManyToOne('User', colname='user_id') > role = ManyToOne('Role', colname='role_id') > > class Role(Entity): > using_options(tablename='roles', autoload=True) > users_roles = OneToMany('UserRole') > users = AssociationProxy('users_roles', 'user') > > class User(Entity): > using_options(tablename='users', autoload=True) > users_roles = OneToMany('UserRole') > roles = AssociationProxy('users_roles', 'role') > > This setup works fine for reading but not for updating or deleting. > > I was able to then get the append method working via the following > > def _create_ur_by_role(role): > return UserRole(role=role) > > in class User: > roles = AssociationProxy('users_roles', 'role', > creator=_create_ur_by_role) > > I am still unable to delete roles. Example: > me.roles.pop() < -- works fine > session.flush() > > results in... > > AssertionError: Dependency rule tried to blank-out primary key column > 'users_roles.user_id' > > I have tried adding ondelete='cascade' to the UserRole model. This > caused no change. > > Any help will be greatly appreciated > > -brad > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalchemy@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en -~----------~----~----~----~------~----~------~--~---