Как заказать по количеству многие ко многим отношения с эликсиром? - PullRequest
0 голосов
/ 03 февраля 2012

Используйте Эликсир и имейте две сущности - Избиратель и Кандидат - со многими между многими (избиратель может голосовать за многих кандидатов, если это имеет значение).Хотите получить список кандидатов, отсортированных по количеству избирателей.Есть ли способ сделать это, используя такое объявление Elixir?:

class Voter(Entity):
    votes = ManyToMany('Candidate')

class Candidate(Entity):
    voters = ManyToOne('Voter')

Я прочитал SQLAlchemy, упорядочивающий по отношению ко многим ко многим , но хочу сделать это более четкопуть с эликсиром.Надеюсь, это возможно.

1 Ответ

1 голос
/ 06 февраля 2012

Единственный способ, которым я обнаружил, что в Elixir можно упорядочить отношение «многие ко многим» - это вывести вторичную таблицу из отношения и делать «как обычно в алхимии». Примерно как то так:

secondr_table = Candidate._descriptor.find_relationship('voters').secondary_table
cands_by_rank = (
    session.query(
        Candidate.id,
        func.count(secondr_table.c.candidate_id).label('total')
    )
    .join(secondr_table)
    .group_by(Candidate)
    .order_by('total DESC')
...