Graphene 和 SQLAlchemy:从基本对象类型派生
Graphene and SQLAlchemy: derivate from a base object type
我正在使用 Flask、Graphene、SQLAlchemy 和 Graphene-SQLAlchemy 构建一个应用程序,我在其中实现了以下模型:
class User(db.Model):
__tablename__ = "user"
id = Column(Integer, primary_key=True)
name = Column(Text, nullable=False)
email = Column(Text, nullable=False)
class BusinessUser(db.Model):
__tablename__ = "bis_user"
id = Column(Integer, ForeignKey("user.id"), primary_key=True)
vatNumber = Column(Text, nullable=False)
class LVUser(db.Model):
__tablename__ = "lv_user"
id = Column(Integer, ForeignKey("user.id"), primary_key=True)
lv_num = Column(Integer, nullable=False)
我的目标是定义三种 GraphQL 类型:
type User {
id : ID
name : String
email : String
}
type BusinessUser {
id : ID
name : String
email : String
vatNumber : String
}
type LVUser {
id : ID
name : String
email : String
lvNum : Integer
}
但我正在努力寻找一种高效而优雅的方式来这样做。有没有办法让我们说一个“基本”对象类型 User
并在我的基本类型的顶部创建 BusinessUser
和 LVUser
类型同时提供额外的字段?
请阅读 Composing Mapped Hierarchies with Mixins,它似乎准确描述了您正在寻找的场景和解决方案。
然而,从你有外键到 user.id
来自其他两个表的事实暗示我可以使用 Mapping Class Inheritance Hierarchies 实现的继承,而策略将取决于你的实际表在数据库层面上进行了设计。
我正在使用 Flask、Graphene、SQLAlchemy 和 Graphene-SQLAlchemy 构建一个应用程序,我在其中实现了以下模型:
class User(db.Model):
__tablename__ = "user"
id = Column(Integer, primary_key=True)
name = Column(Text, nullable=False)
email = Column(Text, nullable=False)
class BusinessUser(db.Model):
__tablename__ = "bis_user"
id = Column(Integer, ForeignKey("user.id"), primary_key=True)
vatNumber = Column(Text, nullable=False)
class LVUser(db.Model):
__tablename__ = "lv_user"
id = Column(Integer, ForeignKey("user.id"), primary_key=True)
lv_num = Column(Integer, nullable=False)
我的目标是定义三种 GraphQL 类型:
type User {
id : ID
name : String
email : String
}
type BusinessUser {
id : ID
name : String
email : String
vatNumber : String
}
type LVUser {
id : ID
name : String
email : String
lvNum : Integer
}
但我正在努力寻找一种高效而优雅的方式来这样做。有没有办法让我们说一个“基本”对象类型 User
并在我的基本类型的顶部创建 BusinessUser
和 LVUser
类型同时提供额外的字段?
请阅读 Composing Mapped Hierarchies with Mixins,它似乎准确描述了您正在寻找的场景和解决方案。
然而,从你有外键到 user.id
来自其他两个表的事实暗示我可以使用 Mapping Class Inheritance Hierarchies 实现的继承,而策略将取决于你的实际表在数据库层面上进行了设计。