Как избежать NoReferencedTableError для таблиц, объявленных в разных пакетах - PullRequest
0 голосов
/ 03 июля 2018

У меня есть модели, объявленные в разных пакетах, например:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...