问题描述
sqlAlchemy 是否提供了一种方便的模式来使用单个表将多个类与另一个类相关联?例如,通过使用与“Tag”类的多态多对多关系使“Post”和“Video”类可标记?
我熟悉 Laravel PHP 框架中 many-to-many polymorphic relationships 的实现。此实现使用连接表中的 type
字段来区分“Post”和“Video”类。
示例:
posts
id - integer
name - string
videos
id - integer
name - string
tags
id - integer
name - string
taggables
tag_id - integer
taggable_id - integer
taggable_type - string
我在 sqlAlchemy 中找不到类似的东西。据我了解,Polymorphism in SQLalchemy 仅限于类继承的模式。同样,association object pattern 似乎只允许两个类之间的关系。
是否推荐像我上面的例子那样的多态模式?还是通常为每个类定义带有“标签”的多对多关系更好?
解决方法
你绝对可以用 sqlalchemy 来实现这一点。
请阅读文档的 Examples: Generic Associations 部分了解各种选项。
您要查找的代码显示在 discriminator_on_association
代码段中。