python / intermediate
Snippet
Asynchronous Database Aggregation with acount and aaggregate
Django 4.2+ provides asynchronous aggregate methods like acount() and aaggregate() on QuerySets. These allow non-blocking evaluation of summary statistics within asynchronous views and background tasks.
snippet.py
python
1
2
3
4
5
6
7
8
9
10
11
12
from django.db.models import Avgfrom myapp.models import Orderasync def get_order_summary_metrics():total_orders = await Order.objects.filter(status='completed').acount()metrics = await Order.objects.filter(status='completed').aaggregate(avg_total=Avg('total_amount'))return {"count": total_orders,"average": metrics.get("avg_total")}
django
Breakdown
1
total_orders = await Order.objects.filter(status='completed').acount()
Asynchrony-aware count evaluation directly querying the database.
2
metrics = await Order.objects.filter(status='completed').aaggregate(
Executes non-blocking aggregate calculation using async ORM methods.
3
avg_total=Avg('total_amount')
Defines the aggregation operation specifying column averaging logic.
4
return {
Returns compiled asynchronous metrics dictionary object.