0
私のdjangoアプリケーション(1.8)には、TeamMember
のブール型フィールドprimary_contact
とUser
との外部キーの関係を持つモデルがあります。私はTeamMember
と関連のないユーザオブジェクトのセットをprimary_contact=True
としたいと思います。しかし、フィルタリングされた関連オブジェクトのカウントでクエリセットに注釈を付ける
User.objects.prefetch_related(Prefetch('teammember_set', queryset=.objects.filter(primary_contact=True), to_attr='primary_contacts'))
をI:
User.objects.annotate(teammember__count=Count('teammember'))
そして、私も簡単に十分なprimary_contact TeamMembersをプリフェッチすることができます:私は簡単に十分なチームメンバーの数を取得することができます
(primary_contact=False
とTeamMembers
は大丈夫です) "私はprimary_contactチームのメンバーを持っていないユーザー"によってクエリセットをフィルタリングできるようになっています。
明らかに、ORMでこれを行い、クエリを最小限に抑え、可能であれば生のSQLを使用しないでください。
興味深いことに、djangoのormがそのようなクエリを許可するということは私には起こりませんでした。それはまさに私が探していたものではありませんが、それは私にもっと近いです。 'User.objects.exclude(Q(teammember__primary_contact = True))')は有望視されています。ありがとう! –