Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python SQLAlchemy辅助表可以是db.Model实例吗?_Python_Sqlalchemy_Flask Sqlalchemy - Fatal编程技术网

Python SQLAlchemy辅助表可以是db.Model实例吗?

Python SQLAlchemy辅助表可以是db.Model实例吗?,python,sqlalchemy,flask-sqlalchemy,Python,Sqlalchemy,Flask Sqlalchemy,我正在从事一个Flask SQLAlchemy项目,我已经实现了一个很好的JSON序列化方法,该方法适用于我的SQLAlchemy模型。在查询数据库之后,我可以通过RESTAPI轻松地呈现该数据。当我为多对多关系使用secondary表时,这些表是db.Table的实例,如下所示: elections_voters = db.Table( 'elections_voters', db.metadata, db.Column('election_id', db.Intege

我正在从事一个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_或_404(Election\u id)
,然后返回
Election.voctors.mycustomserialize()
,因为
投票者将由SQLAlchemy填充。但是,它不像它的父对象那样是
db.Model
的实例,因此我不能对该子对象使用序列化方法


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

我考虑过了:

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

还有,有一些是按照我描述的那样做的,但我认为我不需要它们