【问题标题】:Flask, NoForeignKeysError despite model table correctly set unless otherwiseFlask,NoForeignKeysError 尽管模型表设置正确,除非另有说明
【发布时间】:2016-01-05 08:30:15
【问题描述】:

我认为我正确定义了我想将社区与他们的议程链接的数据模型,但是我遇到了以下错误。 能给个提示吗?

NoForeignKeysError:无法确定关系 CSCommunity.agenda 上父/子表之间的连接条件 - 没有链接这些表的外键。确保引用列与 ForeignKey 或 ForeignKeyConstraint 相关联,或指定“primaryjoin”表达式。

关于以下代码。

class Agenda(db.Model):
__tablename__ = 'communityagenda'
id = db.Column(db.Integer, primary_key=True)
csc = db.Column(db.Integer, db.ForeignKey('scorecards.id'))
cscommunity = db.Column(db.Integer, db.ForeignKey('cscommunities.id'))
meeting_date = db.Column(db.DateTime)
notes = db.Column(db.Text)

class CSCommunity(db.Model):
__tablename = 'cscommunities'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(150))
key_leaders = db.Column(db.Text)
subgroup = db.Column(db.Text)
#---------------------------
region = db.Column(db.Integer, db.ForeignKey('regions.id'))
district  = db.Column(db.Integer, db.ForeignKey('districts.id'))
subdistrict  = db.Column(db.Integer, db.ForeignKey('subdistricts.id'))
village = db.Column(db.Integer, db.ForeignKey('villages.id'))
agenda = db.relationship('Agenda', backref='cscommunity', cascade='all, delete-orphan', lazy='dynamic')
faclilitators = db.relationship('Facilitators', backref='cscommunities', cascade='all, delete-orphan', lazy='dynamic')

【问题讨论】:

    标签: flask sqlalchemy flask-sqlalchemy


    【解决方案1】:

    这段代码有几个问题(如果我们跳过你的 sn-p 中没有定义地区、地区、街道、村庄和促进者的事实):

    1. __tablename = 'cscommunities' 应该是 __tablename__ = 'cscommunities'(请注意您缺少第二个“__”)

    2. 您创建的 backref='cscommunity'(关系)与 Agenda.cscommunity(列)冲突。重命名你的 backref。

    修复两者后我没有收到任何错误 (SQLAlchemy==1.0.4)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-14
      • 1970-01-01
      • 2023-03-14
      • 2020-02-25
      • 1970-01-01
      • 2019-11-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多