Имея эту SQLAlchemy модель:ВЫБЕРИТЕ условия на отношениях с SQLAlchemy
class Post(db.Model):
__tablename__ = 'posts'
post_id = db.Column(db.Integer, primary_key=True)
post_parent = db.Column(db.Integer, db.ForeignKey('posts.post_id'))
children = db.relationship('Post')
Как вы можете видеть, Post
s может иметь детей (то есть Post
сек объекты, post_parent
не 0). Для каждого Post
, который я извлекаю из базы данных, SELECT выполняется для извлечения его дочерних элементов вместе с ними. Ничего страшного.
Но, в моей базе данных дизайн, Post
s, у которого post_parent нет 0, не может быть детей (т. Е. У детей с родительских постов не может быть больше детей под ними). Но SELECT для их получения. Как я могу избежать этого?
что-то вроде: children = db.relationship ('Post', primaryjoin = "and_ (Post.post_id == Post.post_parent, Post.post_parent == 0)"? – Trent
Другая вещь, которую вы можете отметить как lazyload так что, если вы специально не попытаетесь получить доступ к свойству children, он не будет запускать этот дополнительный SQL – Trent
@Trent 'Невозможно определить направление отношений для отношений 'Post.children' - столбцы внешнего ключа в условии соединения присутствуют как в родительском и отображаемые таблицы ребенка. Убедитесь, что только те столбцы, которые относятся к родительскому столбцу, помечены как чуждые, либо через внешнюю() аннотацию, либо через аргумент foreign_keys. ' – monq