SQLAlchemy Полиморфная загрузка - PullRequest
2 голосов
/ 05 января 2012

У меня есть эта модель в SQLAlchemy:

class User(Base):
    __tablename = 'users'
    id = Column(Integer, primary_key=True, autoincrement=True)
    type = Column(Text, nullable=False)
    user_name = Column(Text, unique=True, nullable=False)
    __mapper_args__ = {'polymorphic_on': type}

class Client(User):
    __tablename__ = 'clients'
    __mapper_args__ = {'polymorphic_identity': 'client'}
    id = Column(Integer, ForeignKey('users.id'), primary_key=True)
    client_notes = Column(Text)

Это наследование объединенной таблицы.Проблема в том, что я запрашиваю пользователя:

self.session.query(User).all()

, все, что я получаю, это записи от клиентов, в то время как я хочу, чтобы все записи на пользователя без клиентаКак мне решить эту проблему?

Редактировать: я использую SQLAlchemy 0.7.4 и Pyramid 1.3a3

1 Ответ

2 голосов
/ 05 января 2012

session.query(User) не выполняет фильтрацию по значению столбца type.
Однако созданный оператор SQL SELECT выбирает только данные из таблицы users (если не используется with_polymorphic(...)),

Но вы можете добавить filter явно для достижения желаемого результата:

session.query(User).filter(User.type=='user').all()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...