Умный Querying в Django, ManyToMany отношения с пользователем - PullRequest
1 голос
/ 29 марта 2011

Я работаю над приложением, которое в настоящее время имеет много связей ManyToMany (и в конечном итоге их будет еще больше), и я пытаюсь придумать умные способы (читай: правильные способы) для точного запроса ORM дляОбъединенные данные.

Вот пример того, что у меня есть и что мне нужно делать.Я прошу прощения за псевдокод.

ProjectModel:
    owner = ForeignKey(User) #just one user
    people = ManyToMany(User) #multiple users and theoretically can also contain the owner

Теперь то, что я хочу запросить, представляет собой список каждого пользователя, который является "человеком" в проектах, которыми владеет текущий пользователь.

Я понятия не имею, как это сделать.__contains не очень подходит для этого ... поэтому я думаю, что мои варианты сводятся к тому, чтобы просто запросить каждый проект и выполнить итерации самостоятельно.Но было бы гораздо полезнее, если бы я знал, как получить это через ORM / SQL.

Спасибо!

1 Ответ

7 голосов
/ 29 марта 2011
# users in projects owned by request.user  
users = User.objects.filter(projectmodel__owner=request.user).distinct()

Если есть много m2ms, и вы определили related_name в своем поле people, это то, что вы использовали бы в обратном поиске вместо projectmodel.

...