在SQLAlchemy中使用id在多对多关系中插入

时间:2013-06-08 04:48:29

标签: sqlalchemy many-to-many flask-sqlalchemy

假设我使用关联表在多对多关系中有一个文章模型和一个Tag模型。标签具有属性id(主键)和tag_name。文章有很多标签。

我想创建一个带有标签的新文章,并且我要添加现有标签的ID。

我有这样的事情:

self.tags = [ Tag.query.filter_by(id=tag_id).first() for tag_id in tag_ids ]

(我正在使用Flask-SQLAlchemy。)

如何在不必要地查询Tag对象的情况下执行此操作?

我想实际上只是在关联表中插入tag_id,article_id关联;我可以不使用原始声明吗?

1 个答案:

答案 0 :(得分:2)

如果您直接映射了关联表,例如TagAssociation,则可以创建TagAssociation(article_id=x, tag_id=y)。如果OTOH表只出现在secondary的{​​{1}}参数中,则ORM没有直接系统,您需要运行relationship(),尽管您使用insert(),即Session.execute()