SQL Алхимия: отношения с внуком - PullRequest
1 голос
/ 24 июня 2011

Я строю структуру SQL Alchemy с тремя различными уровнями объектов; например, рассмотрим простую базу данных для хранения информации о некоторых блогах: есть некоторые объекты Blog, некоторые объекты Post и некоторые объекты Comment. Каждый Post принадлежит Blog, а каждый Comment принадлежит Post. Используя backref, я могу автоматически получить список всех Post s, принадлежащих Blog и аналогично для Comment s.

Я разработал каркас для такой структуры .

То, что я хотел бы сделать сейчас, - это иметь непосредственно в Blog массив всех Comment, принадлежащих этому Blog. Я попробовал несколько подходов, но они не работают или даже не заставляют SQL Alchemy плакать так, как я не могу исправить. Я бы подумал, что это довольно частая необходимость, но ничего полезного найти не смог.

Может кто-нибудь подсказать, как это сделать?

Спасибо.

Ответы [ 2 ]

2 голосов
/ 23 декабря 2013

Я думаю, вы можете использовать ассоциативный прокси

class Blog(Base):

    comments = association_proxy('posts', 'comments')
0 голосов
/ 24 июня 2011

Вам необходимо использовать join :

comments = session.query(Comment).join(Post).filter(Post.blog == b1).all()
...