У меня есть модели, объявленные в разных пакетах, например:
base.models.py
class BaseModel(object):
__abstract__ = True
id = sa.Column(sa.Integer, primary_key=True)
MyBase = declarative.declarative_base(cls=BaseModel, metadata=metadata)
foo.models.py
class FooModel(MyBase):
__tablename__ = 'foos'
leads = sa.orm.relationship('bar.models.Bar', backref='foo')
bar.models.py
class Bar(MyBase):
__tablename__ = 'bars'
foo_id = sa.Column(sa.Integer, sa.ForeignKey('foos.id'))
Если я запрашиваю Bar
,
count = session.query(Bar).filter_by(some_attr='spam').count()
Sqlalchemy вызывает исключение:
NoReferencedTableError: Foreign key associated with column 'bars.foo_id' could not find table 'foos' with which to generate a foreign key to target column 'id'
Я могу обойти это, импортировав Foo
в модуль, где я выполняю запрос.
Есть ли способ настроить модели так, чтобы это исключение не возникало, и мне не нужно было добавлять лишний импорт?
SQLAlchemy == 1.2.5