当我尝试访问该页面时发生此错误。我创建表时没有出错,但似乎还有问题。
模型是这样的:
class User(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(64), index=True, unique=True)
sell_items = db.relationship('Item', backref='user')
class Item(db.Model):
id = db.Column(db.Integer, primary_key=True)
item_name = db.Column(db.String(64), index=True)
item_image = db.Column(db.String(200), index=True)
price = db.Column(db.Float(10), index=True)
user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
user = db.relationship('User', backref='sell_items')
整个错误消息是这个
Triggering mapper: 'Mapper|User|user'. Original exception was: Error creating backref 'user' on relationship 'User.sell_items': property of that name exists on mapper 'Mapper|Item|item'
我该如何解决这个问题?我想要做的是参考销售该商品的username
,但我不能。模型之间的关系存在问题。
答案 0 :(得分:1)
当您使用backref
时,会自动创建向后关系,因此它只应在关系的一侧使用。在您的情况下,您可以移除sell_items
模型中的User
,User
模型将自动从Item
获得关系。
要在双方声明关系连接(例如,如果要自定义其名称,请使用back_populates='name_of_relationship_on_other_model'
。
答案 1 :(得分:0)
在您的Item类中,替换此行
user = db.relationship('User', backref='sell_items')
与此行
user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False)
它应该以这种方式工作,从那里您可以像这样item = Item.query.first()
,然后item.sell_items
...进行查询,以获取发布该项目的用户。
我希望能帮上忙。