[英]flask sqlalchemy - Insert many-to-many only with entities IDs
假設我有http://flask-sqlalchemy.pocoo.org/2.1/models/中建議的多對多關系:
tags = db.Table('tags',
db.Column('tag_id', db.Integer, db.ForeignKey('tag.id')),
db.Column('page_id', db.Integer, db.ForeignKey('page.id'))
)
class Page(db.Model):
id = db.Column(db.Integer, primary_key=True)
tags = db.relationship('Tag', secondary=tags,
backref=db.backref('pages', lazy='dynamic'))
class Tag(db.Model):
id = db.Column(db.Integer, primary_key=True)
我有一個完全由以下標識的頁面:
page = Page.query.filter_by(id=value).one()
我還有標簽ID 列表 。 目前的工作代碼是:
for id in tag_ids:
tag = Tag.query.filter_by(id=id).one() #wanna avoid this
page.tags.append(tag)
對於更復雜的表,這可能是低效的,因為它將使不必要的查詢識別標記實體,只是為了滿足SQLAlchemy體系結構。 那么: 如何通過提供Page id和Tag id來插入tags表?
我試過,但沒有成功,這個:
tags.insert().values(tag_id=value1, page_id=value2)
db.session.commit()
page_id = Page.query.get(value).id
for tag_id in tag_ids:
db.session.connection().execute(tags.insert.values(tag_id=tag_id, page_id=page_id))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.