[英]models.py in sqlalchemy forces class relationships to be above the class being referenced
我的 python 类被迫在我的 models.py 中定义在试图使用它们的类之上。 这很好,除了我有一些我无法形成的双向关系,因为它们相互引用。
模型.py
class Language(Updateable, db.Model):
__tablename__ = 'language'
id = sqla.Column(sqla.Integer, primary_key=True)
language = sqla.Column(sqla.String(2), nullable=False)
type_id = sqla.Column(sqla.Integer, sqla.ForeignKey(Type.id), index=True)
type = sqla_orm.relationship('Type', back_populates='translated_languages')
#This will complain that 'Type' was not defined prior to this class
types = sqla_orm.relationship('Type', back_populates='language', UserList=False)
class Type(Updateable, db.Model):
__tablename__ = 'type'
id = sqla.Column(sqla.Integer, primary_key=True)
translated_languages = sqla_orm.relationship('Language', back_populates='type')
language_id = sqla.Column(sqla.Integer, sqla.ForeignKey(Language.id), index=True)
language = sqla_orm.relationship('Language', back_populates='types')
问题是ForeignKey
实例; 通常它们被引用为表,而不是模型,并作为字符串传递,因为表可能还不存在,或者可能尚未映射到 model class。 此外,关系关键字参数UserList
应该是uselist
。
class Language(Base):
__tablename__ = 'language'
id = sqla.Column(sqla.Integer, primary_key=True)
language = sqla.Column(sqla.String(2), nullable=False)
type_id = sqla.Column(sqla.Integer, sqla.ForeignKey('type.id'), index=True)
type = sqla_orm.relationship('Type', back_populates='translated_languages')
# This will complain that 'Type' was not defined prior to this class
types = sqla_orm.relationship('Type', back_populates='language', uselist=False)
class Type(Base):
__tablename__ = 'type'
id = sqla.Column(sqla.Integer, primary_key=True)
translated_languages = sqla_orm.relationship('Language', back_populates='type')
language_id = sqla.Column(sqla.Integer, sqla.ForeignKey('language.id'), index=True)
language = sqla_orm.relationship('Language', back_populates='types')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.