django group by date from datetime field

To group by date from a datetime field in Django, you can follow these steps:

  1. Import the necessary modules:
from django.db.models.functions import TruncDate
from django.db.models import Count
  1. Define your queryset:
queryset = YourModel.objects.annotate(date=TruncDate('your_datetime_field'))

Replace YourModel with the name of your Django model and your_datetime_field with the name of the field that stores the datetime values.

  1. Group the queryset by date and count the occurrences:
queryset = queryset.values('date').annotate(count=Count('id'))

This will group the queryset by the truncated date and count the number of occurrences for each date.

  1. Optionally, order the results:
queryset = queryset.order_by('date')

This step is optional but can be useful if you want the results to be ordered by date.

  1. Retrieve the results:
results = list(queryset)

This will retrieve the grouped and counted results as a list.

Now you have a list of dictionaries, where each dictionary contains the date and the count. You can access the values like this:

for result in results:
    date = result['date']
    count = result['count']
    # Do something with the date and count values

That's it! You have now successfully grouped by date from a datetime field in Django.