我正在尝试建立一对多的关系,以便每个咖啡馆都可以有很多评论。然而,SQLAlchemy 提出了一个ArgumentError
定义关系时。我该如何修复这个错误?
class Review(db.Model):
id = db.Column(db.Integer, primary_key=True)
cafe = db.Column(db.String, db.ForeignKey('cafe.name'))
class Cafe(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String)
reviews = db.relationship(Review, backref='cafe')
sqlalchemy.exc.ArgumentError: Error creating backref 'cafe' on relationship 'Cafe.cafes': property of that name exists on mapper 'Mapper|Review|review'
当 SQLAlchemy 尝试创建 backref 时Cafe.cafes
关系称为cafe
on Review
,它会找到您命名的列cafe
并引发不能使用相同名称的错误。
为您的外键指定与关系/反向引用不同的名称。
cafe_name = db.Column(db.ForeignKey(Cafe.name))
或者,当外键和关系在同一模型中定义时,可以更容易地跟踪名称。
class Cafe(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String)
class Review(db.Model):
id = db.Column(db.Integer, primary_key=True)
cafe_id = db.Column(db.ForeignKey(Cafe.id))
cafe = db.relationship(Cafe, backref='reviews')
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)