flask-sqlalchemy - 如何修复 sqlalchemy.exc.NoForeignKeysError 并改进我的 models.py
问题描述
我目前正在练习flask-sqlalchemy,这是我的models.py,我是新手,所以请帮我找到问题
from main import db
CharacterConstellation = db.Table('CharacterConstellation', db.Model.metadata,
db.Column('Character_id', db.Integer, db.ForeignKey('Character.id')),
db.Column('Constellation_id', db.Integer,
db.ForeignKey('Constellation.id'))
)
CharacterPassive = db.Table('CharacterPassive', db.Model.metadata,
db.Column('Character_id', db.Integer, db.ForeignKey('Character.id')),
db.Column('Passive_id', db.Integer, db.ForeignKey('Passive.id'))
)
CharacterTalent = db.Table('CharacterTalent', db.Model.metadata,
db.Column('Character_id', db.Integer, db.ForeignKey('Character.id')),
db.Column('Talent_id', db.Integer, db.ForeignKey('Talent.id'))
)
class Character(db.Model):
__tablename__ = 'Character'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String())
description = db.Column(db.String())
allegiance = db.Column(db.String())
region = db.Column(db.String())
vision = db.Column(db.String())
weapon = db.Column(db.String())
description = db.Column(db.Text())
constellations = db.relationship("Constellation", secondary=CharacterConstellation, back_populates='characters')
passives = db.relationship("Passive", secondary=CharacterPassive, back_populates='characters')
talents = db.relationship('Talent', secondary=CharacterTalent, back_populates='characters')
class Constellation(db.Model):
___tablename__ = 'Constellation'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String())
description = db.Column(db.Text())
characters = db.relationship('Character', secondary=CharacterConstellation, back_populates='constellations')
class Passive(db.Model):
__tablename__ = 'Passive'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String())
description = db.Column(db.Text())
characters = db.relationship('Character', secondary=CharacterPassive, back_populates='passives')
class Talent(db.Model):
__tablename__ = 'Talent'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String())
description = db.Column(db.Text())
characters = db.relationship('Character', secondary=CharacterTalent, back_populates='talents')
这就是我现在遇到的问题:
sqlalchemy.exc.NoForeignKeysError:无法确定关系 Character.constellations 上的父/子表之间的连接条件 - 没有通过辅助表“CharacterConstellation”链接这些表的外键。确保引用列与 ForeignKey 或 ForeignKeyConstraint 相关联,或指定“primaryjoin”和“secondaryjoin”表达式。
解决方案
推荐阅读
- python - Dialogflow/Api.ai 使用 Webhook 发送提示问题
- protractor - 量角器中所有可用的挂钩
- performance - 读,写,然后……“O”?
- kubernetes - 我可以将 Role 和 ServiceAccounts 与多个命名空间一起使用吗?
- ruby-on-rails - Rails 迁移:如何将属性从模型移动到其他模型
- sapui5 - 读取成功处理程序中的 OData 读取不起作用
- c# - iText 7 - HTML 到 PDF 写入 MemoryStream 而不是文件
- dialogflow-es - 在谷歌助手中创建表格卡片
- java - 无法从数组列表中删除元素
- c# - 如何使用自定义公钥和填充格式使用 RSA 加密长字符串