Я пытаюсь разрешить пользователям «любимые» различные элементы в моем веб-приложении. Так, например, пользователь может любить комментарий и любить новость. Затем я хочу запросить все элементы, которые пользователь предпочитает, и загружать связанные объекты (будь то новости или комментарий и т. Д.) Полиморфно, чтобы отобразить список объектов для пользователя. Я знаю, как создать один-один полиморфные отношения, однако мне не удалось найти много для многих.sqlalchemy polyorphic many to many relation
Заранее спасибо
EDIT
В моих один-к-одному полиморфных отношениях у меня есть один-много отношения между пользователями и действиями пользователя, и один-один полиморфный связи между действиями пользователя, так и объект, действие было выполнено. Так что в этом случае моя таблица действий пользователя, как так:
class UserAction:
pass
user_actions = Table('user_action', metadata,
Column('id', Integer, autoincrement=True, primary_key=True),
Column('module', String(30)),
Column('created', DateTime, default=datetime.now),
Column('user_id', Integer, ForeignKey('user.id'))
)
новости стол (один из объектов, которые могут быть доступны с помощью действий пользователя):
class News:
pass
news = Table('news', metadata,
Column('id', Integer, autoincrement=True, primary_key=True),
Column('title', String(30), nullable=False),
Column('action_id', Integer, ForeignKey('user_action.id'))
)
И картостроители:
mapper(UserAction, user_actions, polymorphic_on=user_actions.c.module, polymorphic_identity='user_action')
mapper(News, news, inherits=UserAction, polymorphic_identity='news')
Как вы можете видеть, между объектом новостей и ассоциированной с ним записью user_action существует четкое одностороннее отношение. Это связано с тем, что внешний ключ user_action находится в таблице новостей. Если бы я хотел создать много-много полиморфных отношений, в которых многие пользователи могли бы использовать несколько разных типов объектов, как бы я это сделал? Спасибо.
Нет никакой разницы в создании отношения «многие ко многим» к полиморфной модели от одного к одному. Не могли бы вы уточнить или опубликовать образец кода, который не работает или вы хотите адаптировать? –