У меня есть случай, когда я использую одну таблицу для хранения данных, связанных с пользователем и группой. Этот столбец называется профилем. Итак, в основном эта таблица представляет собой таблицу «многие ко многим» для случаев, когда один пользователь принадлежит ко многим группам или в одной группе много пользователей.
Я немного запутался, как это должно быть описано...
Вот упрощенное представление класса.
user_group_table = Table('user_group', metadata,
Column('user_id', Integer,ForeignKey('profiles.id',
onupdate="CASCADE", ondelete="CASCADE")),
Column('group_id', Integer, ForeignKey('profiles.id',
onupdate="CASCADE", ondelete="CASCADE"))
)
class Profile(Base)
__tablename__ = 'profiles'
id = Column(Integer, autoincrement=True, primary_key=True)
name = Column(Unicode(16), unique=True) # This can be either user- / groupname
groups = relationship('Profile', secondary=user_group_table, backref = 'users')
users = relationship('Profile', secondary=user_group_table, backref = 'groups')
#Example of the usage:
user = Profile()
user.name = 'Peter'
salesGroup = Profile()
salesGroup.name = 'Sales'
user.groups.append(salesGroup)
salesGroup.users
>[peter]