擅长:python、mysql、java
<p>我将在@vladimirlliev的回应中补充一些,让其他可能不知道该怎么做的人澄清一下。在</p>
<p>将具有“foreign table reference”列属性<em>的表放在其引用的</em>之后。在本例中,这意味着将Report<em>放在ReportPhoto之后。这将解决名称错误,但是,您将在ReportPhoto外键引用中留下一个新错误。要解决此问题,请将外键表引用放在引号中。您可以通过引用声明性文档(例如。,声明性.py)在“配置关系”下,具体地说,阅读引用国外参考文献的部分。在</p>
<p>对于您的代码,这看起来像:</p>
<pre><code>class ReportPhoto(Base):
# This now goes first
__tablename__ = 'report_photo'
id = Column(Integer, primary_key=True)
# Notice the quotations around Report references here
report_id = Column(Integer, ForeignKey("Report.id"), nullable=False)
# Notice the quotations around Report references here
report = relationship("Report",
uselist=False,
backref=backref("report_photo", uselist=True))
class Report(Base):
# This is now _after_ ReportPhoto
__tablename__ = 'report'
id = Column(Integer, primary_key=True)
# ReportPhoto now exists and we will not trip a NameError exception
has_photo = column_property(
select(ReportPhoto.any())
)
</code></pre>