0
说我有很多一对多的关系,建议在http://flask-sqlalchemy.pocoo.org/2.1/models/:瓶SQLAlchemy的 - 插入多到许多只与实体的ID
page = Page.query.filter_by(id=value).one()
:
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)
我有一个页面完全确定
我也有列表的标签ids。当前工作的代码是:
for id in tag_ids:
tag = Tag.query.filter_by(id=id).one() #wanna avoid this
page.tags.append(tag)
对于更复杂的表格,这可能是低效的,因为它将使不必要的查询来识别标签的实体,只是为了满足SQLAlchemy的架构。所以:我如何才能通过提供页面ID和标签ID插入标签表?
我尝试过,没有成功,这样的:
tags.insert().values(tag_id=value1, page_id=value2)
db.session.commit()
这将是db.session.connection()而不是db.session.connection。此外,此解决方案仅适用于页面实体已存在于数据库中的情况。我找不到在单个事务中创建页面及其标签的方法。 – LRMAAX
谢谢你的正确。标签是一个关联表。其中的字段都是外键。 – stamaimer