SQLAlchemy辅助表可以是数据库模型实例?

2024-09-27 21:32:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个Flask SQLAlchemy项目,并且实现了一个很好的JSON序列化方法,它适用于我的SQLAlchemy模型。在查询数据库之后,我可以通过restapi轻松地显示这些数据。当我将secondary表用于多对多关系时,这些表是db.Table的实例,如下所示:

elections_voters = db.Table(
    'elections_voters',
    db.metadata,
    db.Column('election_id', db.Integer, db.ForeignKey('elections.id'), primary_key=True),
    db.Column('user_id', db.Integer, db.ForeignKey('users.id'), primary_key=True),
)

class Election(MyModel):
    __tablename__ = 'elections'

    id = db.Column(db.Integer, db.Sequence('election_id_seq'), autoincrement=True, primary_key=True)
    name = db.Column(db.Unicode(255))
    voters = db.relationship('User', secondary=elections_voters, backref='electionsVoting')

假设我想要一个API,它只显示特定选举的选民列表。我会做类似Election.query.get_or_404(election_id),然后返回election.voters.mycustomserialize(),因为voters将由SQLAlchemy填充。但是,它不是db.Model的一个实例,因此我不能对该子对象使用序列化方法。在

有没有一种方法可以设置我的模型,使elections_voters辅助表是db.Model的完整实例,而不仅仅是db.Table,这是否明智?我的序列化方法需要访问列名,这就是为什么我没有把它拆分成一个独立的方法。在


Tags: 实例方法keyidtruedb序列化sqlalchemy
1条回答
网友
1楼 · 发布于 2024-09-27 21:32:35

我想得太多了:

在本例中,elections.voters只是一个列表,而不是一个模型实例。我可以用列表理解来处理序列化。在

{但我也不需要这样描述。在

相关问题 更多 >

    热门问题