在Flask sqlalchemy文档中,给出了使用简单多对多关系的示例:
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)
其中可以使用以下语法接触相关对象:
^{pr2}$我要做的基本上就是把下面的关系加在上面的关系上:
^{3}$因此,每个页面都有附加的标记,但是每个标记在该页面的范围内可以有多个子级。我为一个名为汽车的页面做了一个展示案例,下面是它的标签和它们各自的子标签。在
(第页)汽车:
上面的所有列表项都是标记对象
我希望能够使用以下语法获取相关对象:
Page.tag.children
例如(下面是明显的伪代码,但我想弄清楚这段关系的目的是什么):
Cars.tesla.children
我想,
tag_children
不需要另一个表。尝试使用SQLAlchemy邻接列表:对于此架构,您可以使用如下语法:
^{pr2}$它是使用SQLAlchemy模型的常见语法。尝试使用它来代替建议的
Cars.tesla.children
。在类似
Cars['tesla'].children
的东西可以通过getitem方法实现,但我认为,这是一种非常不明确的方式。在完整代码段:
和测试用例:
相关问题 更多 >
编程相关推荐