所以我花了一些时间在这上面,一直在兜圈子,一无所获,所以我想我应该去找专家!在
使用Flask 0.9
和SQLAlchemy 0.7.9
我试图创建一个包含多个图库集合的库页面。每个库都有一个子库集合,每个子库都有一个照片集合。下面显示的第一次尝试显然不起作用:
class Gallery(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(64))
subgals = db.relationship('SubGallery', backref='author', lazy='dynamic')
def __repr__(self):
return '<Gallery - %r>' % (self.title)
class SubGallery(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(64))
photos = db.relationship('Photo', backref='author', lazy='dynamic')
gallery_id = db.Column(db.Integer, db.ForeignKey('gallery.id'))
def __repr__(self):
return '<Gallery - %r>' % (self.title)
class Photo(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(64))
href = db.Column(db.String(128))
subgallery_id = db.Column(db.Integer, db.ForeignKey('subgallery.id'))
def __repr__(self):
return '<Photo - %r>' % (self.title)
并返回以下错误:
^{pr2}$我一直在研究另一种关系配置,但不是100%确定我需要什么。
我的直觉告诉我我需要一个Adjacency Relationship
,但我还没能走多远。我尝试了一个多对多的映射,但是我没有看到多少关于如何将3个类映射到一起的材料。在
我真的很感谢你们提供的任何意见和见解,谢谢!!在
我认为你建立了一个很好的数据库。在
来自SQLAlchemy的“无法确定…”错误只是说您的模型中没有足够的信息让SQLAlchemy知道子库和照片表之间的关系的连接条件是什么。在
SQLAlchemy试图从你如何命名事物来猜测很多事情,它期望一致性。我相信在本例中,由于您使用camel case
SubGallery
,它没有找到它需要的东西。在如错误消息所示,您可以向关系添加显式
primaryjoin
参数,然后SQLAlchemy会很高兴,或者您可以更改名称来帮助SQLAlchemy自己解决它。在我已经修改了您的定义,将
SubGallery
重命名为'Subgallery',这似乎很管用。以下是修改后的车型:我用了一个小小的快速而肮脏的测试脚本来确保关系正常运行:
^{pr2}$相关问题 更多 >
编程相关推荐