我有以下型号:
class Page(db.Model):
id = db.Column(db.Integer, primary_key=True)
tags = db.relationship('Tag', secondary=tags, lazy='subquery',
backref=db.backref('pages', lazy=True))
class Tag(db.Model):
id = db.Column(db.Integer, primary_key=True)
tags = db.Table('tags',
db.Column('tag_id', db.Integer, db.ForeignKey('tag.id'), primary_key=True),
db.Column('page_id', db.Integer, db.ForeignKey('page.id'), primary_key=True)
db.Column('language', db.String(50), nullable=False)
)
知道我是否要添加以下内容:
tag = Tag()
Page.tags.append(tag)
如何为新添加的标签设置language
列的值。
答案 0 :(得分:1)
是的,您可以通过创建PageTagModel
模型来实现。
如下所示:
class PageTagModel(db.Model):
__tablename__ = 'pagetags'
page_id = db.Column(db.Integer, db.ForeignKey('pages.id'), primary_key=True)
tag_id = db.Column(db.Integer, db.ForeignKey('tags.id'), primary_key=True)
page = db.relationship('Page', backref=db.backref("pagetags"))
tag = db.relationship('Tag', backref=db.backref("pagetags"))
language = db.Column('language', db.String(50), nullable=False)
,然后将Page
模型编辑为以下内容:
class Page(db.Model):
id = db.Column(db.Integer, primary_key=True)
我假设您通过将Tag
和tags
模型应用于__tablename__ = 'tags'
,向Page
模型表提供了这个pages
。
全图:
class Page(db.Model):
__tablename__ = 'pages'
id = db.Column(db.Integer, primary_key=True)
class Tag(db.Model):
__tablename__ = 'tags'
id = db.Column(db.Integer, primary_key=True)
class PageTagModel(db.Model):
__tablename__ = 'pagetags'
page_id = db.Column(db.Integer, db.ForeignKey('pages.id'), primary_key=True)
tag_id = db.Column(db.Integer, db.ForeignKey('tags.id'), primary_key=True)
page = db.relationship('Page', backref=db.backref("tags_annotation"))
tag = db.relationship('Tag', backref=db.backref("tags_annotation"))
language = db.Column('language', db.String(50), nullable=False)
# to use it
tag = Tag()
page = Page()
page_tags = PageTagModel(page=page, tag=tag, language='English')
db.session.add(tag)
db.session.add(page)
db.session.add(page_tags)
db.session.commit()
如果您想直接从tags
模型中获得Page
,则必须将以下行添加到Page
模型中
tags = db.relationship('Tag', secondary='pagetags', lazy='subquery', backref=db.backref('pages', lazy=True))