我知道有类似的问题,但我真的很难理解SQLAlchemy中如何实现泛型字段。
我有一个Permissions类/表,我希望包含一个可以与任何模型类型相关的字段。
我查看过这些示例和此博文http://techspot.zzzeek.org/2007/05/29/polymorphic-associations-with-sqlalchemy/
是否可以在没有单独表的情况下拥有通用关系?只是存储object_type和id?这些方面的东西:
class Permission(AbstractBase):
user = relationship("User", backref=backref('permissions'))
permission_type = column(String())
object = #The object the permission applies to, could be any type.
我想只是一个非常简单的例子,我们将不胜感激!
另外,值得注意的是我来自Django背景!
由于
答案 0 :(得分:5)
您还可以使用generic_relationship
包中的sqlalchemy-utils
。
这里是example for their documentation;
from sqlalchemy_utils import generic_relationship
class User(Base):
__tablename__ = 'user'
id = sa.Column(sa.Integer, primary_key=True)
class Customer(Base):
__tablename__ = 'customer'
id = sa.Column(sa.Integer, primary_key=True)
class Event(Base):
__tablename__ = 'event'
id = sa.Column(sa.Integer, primary_key=True)
object_type = sa.Column(sa.Unicode(255))
object_id = sa.Column(sa.Integer)
object = generic_relationship(object_type, object_id)
答案 1 :(得分:2)
有人在一天之后问了同样的问题,我指出了我们为这种事做的三个例子,但我也写了一个新的例子,它将(大部分)做同样的事情Django做的事(减去那个奇怪的事) contenttypes“table):sqlalchemy generic foreign key (like in django ORM)