A roundup newsletter covering DjangoCon US 2026 logistics (new one-day and online tickets, welcome reception, open spaces, travel safety), Djangonaut Space Session 7 applications closing September 6, recent Django 6.1 pull requests and regression fixes, Fellow reports from Jacob Tyler Walls and Sarah Boyce on 6.1 release blockers, a Django ORM trick for counting on multiple columns, django-upgrade 1.32.0's 44 AI-assisted bug fixes, a note that Docker Compose reads .env files by default, plus job listings and new community projects like django-forge-log and django-salmon.
Table of contents
NewsDjangonaut Space NewsUpdates to DjangoDjango Fellow ReportsSponsoredArticlesEventsDjangoCon USVideosDjango Job BoardProjectsQuestions this post answers
why does Docker Compose pick up variables from a .env file I didn't expect it to use
Docker Compose reads the .env file located in the directory you run it from by default and automatically applies any COMPOSE_* variables it finds there, even if you think of .env as something meant only for your containers. This can be used deliberately, for example setting COMPOSE_FILE=compose.yml:overlay-compose.yml per directory so a git worktree remaps ports and adds labels without editing the shared compose file. Developers debugging unexpected compose behavior can track Docker tooling nuances like this on daily.dev.
how do I count distinct combinations of two columns in a Django queryset
Django's Count only counts one column at a time, so counting unique pet-and-vet pairs with a plain Count returns either every appointment or every distinct vet rather than the distinct pairs. The workaround is a small Subquery subclass whose template wraps values("pet", "vet").distinct() inside a SELECT COUNT(*), leveraging Django's expression system to build the correct aggregate. Django developers wrestling with tricky ORM aggregations can find patterns like this via daily.dev.