0
に一致する外部キーの数に注釈を付けます同じメールを指す "User
。Djangoのクエリは、私は以下の関連のモデルを持っていた場合、特定の値
私はそれがDjango 1.8 introduced Conditional Expressionsを見たことがありますが、この状況にどのように適用されるかはわかりません。 django.db.models.Sum
を適用することにより
に一致する外部キーの数に注釈を付けます同じメールを指す "User
。Djangoのクエリは、私は以下の関連のモデルを持っていた場合、特定の値
私はそれがDjango 1.8 introduced Conditional Expressionsを見たことがありますが、この状況にどのように適用されるかはわかりません。 django.db.models.Sum
を適用することにより
は、ここでそれを達成するための一つの方法だ:
from django.db.models import Case, IntegerField, Sum, When
def users_with_multiple_email_identities():
"""
Return a queryset of Users who have multiple email identities.
"""
return (
User.objects
.annotate(
num_email_identities=Sum(
Case(
When(identity__category='email', then=1),
output_field=IntegerField(),
default=Value(0)
)
)
)
.filter(num_email_identities__gt=1)
)
そこで、我々は、ユーザーごとに電子メールのアイデンティティの数を表す集計フィールドを作成するために使用.annotate()
を使用し、その後に結果を.filter()
を適用します複数の電子メールIDを持つユーザーのみを返します。
類似:http://stackoverflow.com/questions/31169108/django-query-annotation-with-boolean-field –