Упорядочивание SQLAlchemy по соотношению «многие ко многим»

Это упрощенный пример моих текущих моделей (я использую расширение Flask SQLAlchemy ) :

like = db.Table(
    'like',
    db.Column('uid', db.Integer, db.ForeignKey('users.id')),
    db.Column('pid', db.Integer, db.ForeignKey('posts.id'))
)

class User(db.Model):
    __tablename__ = 'users'

    id = db.Column(db.Integer, primary_key = True)
    username = db.Column(db.String(20))

class Post(db.Model):
    __tablename__ = 'posts'

    id = db.Column(db.Integer, primary_key = True)
    title = db.Column(db.String(255))

    likes = db.relationship(
        'User',
        secondary = like,
        backref = db.backref('likes', lazy = 'dynamic'),
        lazy = 'dynamic'
    )

Я пытаюсь заказать Сообщение ' s на количество лайков , которое у него есть.

Это запрос, который я в основном пытаюсь выполнить:

SELECT p.*, COUNT(l.`pid`) as `likes`
FROM `posts` as p
LEFT JOIN `like` as l
    ON p.`id` = l.`pid`
GROUP BY p.`id`
ORDER BY `likes` DESC

Мне просто не удалось заставить что-либо работать на стороне SQLAlchemy. .

Спасибо за любую помощь, которую может предложить.

26
задан anomareh 12 May 2011 в 05:12
поделиться