Skip to content

Instantly share code, notes, and snippets.

@AntiKnot
Created June 18, 2019 10:56
Show Gist options
  • Select an option

  • Save AntiKnot/b7bf9cab1a04c779c9efedb220c92bd2 to your computer and use it in GitHub Desktop.

Select an option

Save AntiKnot/b7bf9cab1a04c779c9efedb220c92bd2 to your computer and use it in GitHub Desktop.
django annotate
# django annoate
#single field
SomeModel.objects.values('gender').annotate(Sum('hotdog_number'))
#mutiple fields
SomeModel.objects.values('gender','age').annotate(Sum('hotdog_number'))
"""odrder_by is needed
without order_by
[
{"name":"foo1","gender":"male","hotdog_number":2},
{"name":"foo2","gender":"fale","hotdog_number":2},
{"name":"foo3","gender":"fale","hotdog_number":2},
{"name":"foo4","gender":"male","hotdog_number":2},
{"name":"foo5","gender":"male","hotdog_number":2},
{"name":"foo6","gender":"fale","hotdog_number":2},
]
=>
[
{"gender":"male","hotdog_number":2},
{"gender":"fmale","hotdog_number":4},
{"gender":"male","hotdog_number":4},
{"gender":"male","hotdog_number":2},
]
"""
#single field
SomeModel.objects.values('gender').annotate(Sum('hotdog_number')).order_by('gender')
#mutiple fields
SomeModel.objects.values('gender','age').annotate(Sum('hotdog_number')).order_by('gender','age')
"""
with order_by
[
{"name":"foo1","gender":"male","hotdog_number":2},
{"name":"foo2","gender":"male","hotdog_number":2},
{"name":"foo3","gender":"male","hotdog_number":2},
{"name":"foo4","gender":"fmale","hotdog_number":1},
{"name":"foo5","gender":"fmale","hotdog_number":1},
{"name":"foo6","gender":"fmale","hotdog_number":1},
]
=>
[
{"gender":"male","hotdog_number":6},
{"gender":"fmale","hotdog_number":3},
]
"""
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment