Issue 354: DjangoCon US Recaps and the Myth of the Well-Structured Project
News
PyCharm & Django Fundraiser Extended to September 14
The second half of our annual JetBrains fundraiser has been extended through September 14, 2026. Thank you to JetBrains for the extra time. You still have time to renew your PyCharm license or give it a try.
Call for volunteers: Fundraising Working Group
The Django Software Foundation is looking for people to join the Fundraising Working Group. This is a particularly interesting time to get involved.
Django Software Foundation
Django Steering Council Meetings - 2026
Notes from the September 7 meeting: packaging related tools as extras, experimental features, usage telemetry, and Fellows pinging the CompositeField and content type parsing DEPs.
Python Software Foundation
Incident Report: File Hosting Errors
Two weeks of intermittent 502s and 503s on files.pythonhosted.org came from a Fastly canary that left one cache node half rolled back, which then exposed three latent bugs in PyPI's own config. The takeaway for the rest of us: turn on dependency caching in CI, which setup-python leaves off by default.
Wagtail CMS News
Prototyping a new CLI for Wagtail
Thibaud Colas is prototyping wagtail-cli, a terminal interface over the v3 API for browsing and publishing pages, managing media, and scaffolding projects, partly so AI agents can reach the CMS without driving a browser. Try it with uv tool install wagtail-cli.
Updates to Django
Today, "Updates to Django" is presented by Raffaella from Djangonaut Space! π
Last week we had 15 pull requests merged into Django by 12 different contributors - including 2 first-time contributors! Congratulations to Vimal Sahani and Dave Gaeddert for having their first commits merged into Django - welcome on board!
News in Django 6.1:
- Fixed a regression that caused
__inlookups on annotations to erroneously return empty querysets and__rangelookups to crash when passed an iterator (#37311). - Fixed a regression where custom querysets used with
Prefetchfor forward foreign key or reverse one-to-one relationships were not routed using the parent querysetβs database (#37300). - Fixed a regression where an admin changelist search crashed when a
search_fieldsentry used an__exactlookup on a field withchoices, and where any search term matched all rows with aTruevalue when an__exactlookup was used on a BooleanField (#37263).
News in Django 6.2:
- Omitting the
tzinfoargument ofExtractandTruncdatabase functions in migrations whenUSE_TZisTrueis deprecated. Passtzinfoexplicitly to avoid inconsistent behavior ifTIME_ZONEchanges. - Unsaved instances with a composite primary key or a
db_defaultprimary key no longer compare equal to other instances.
Django Fellow Reports
Django Fellow Report - Jacob
An early report for about a day at my desk before heading out for some vacation. Six tickets reviewed, two authored, and the usual misc.
Django Fellow Report - Sarah
Seven tickets reviewed and another seven authored. Fellows sync, engaging with security issues, and website working group meeting.
Django Fellow Report - Natalia
Post-DjangoCon US week (including the emotional low π that comes with it), with most of my time going into two things: first, iterating on a security report until we could confirm the issue, followed by developing a solution for it. I also continued the calendar versioning work around DEP 20 π , including both the Django implementation and the release process updates. And, after iterating on a PR tutorial since Vigo, I finally got to see it through.
Sponsored
Your task ran before the transaction committed.
django-ox is a production worker for Django Tasks that runs on the database you already have: no Celery, no Redis, no broker to babysit. Enqueue is a plain INSERT, so a task commits or rolls back with the data it belongs to. Django 5.2 LTS and 6.x, free, BSD-3.

Articles
Soft-deprecating re.match()
After 30 years of tripping people up by anchoring at the start of a string but not the end, re.match() is soft-deprecated in Python 3.15 in favor of the clearer re.prefixmatch().
1001 Django apps β The myth of a well-structured Django project
Ronny Vedrilla makes a thoughtful case for fewer Django apps: treating them as database namespaces rather than folders, starting with one domain plus a few "satellite" apps, and using import-linter to enforce the boundaries so they don't just become decoration.
Nifty Django Feature: Q() Objects
Assigning Q() objects to named variables makes filter logic readable and reusable, and passing several into one .filter() call avoids the extra joins you get from chaining.
DjangoCon US Recaps
I Think That Feeling is Called Hope - Rachell Calhoun
Rachell Calhoun's DjangoCon US recap comes from inside the machinery: a third year chairing volunteers alongside Monica Oyugi, the first time all five Djangonaut Space founders stood in the same room, and open spaces on contributing to Django and on music. It ends on the case for volunteering, which she calls the fastest way she knows to stop feeling like a stranger at a conference.
TSBT73: Pumpkin Spice Bytes - Velda Kiara
Velda Kiara's update on DjangoCon US and related tech discoveries.
The Community Behind Django: My First DjangoCon US Recap and Highlights - Seyram Theresa
Theresa's very in-depth recap of DjangoCon US, from talks and keynotes to lightning talks, hallway convos, Chicago adventures, and more.
DjangoCon US 2026 | Chicago - Jon Gould
Recruiter Jon Gould's fourth DjangoCon, from the sponsor side of the table. His favorite parts were the unscheduled ones, like Aman Singh's early morning walks to the Bean.
Your City Is a Spatial Database and Nobody Told You - Jason Judkins
Jason Judkins's recap of a specific talk at DjangoCon US the other week, by Drishti Jain, highlighting how important shapes and GeoDjango are in the real world.
Django Job Board
Two construction-AI roles at Provision and a backend seat on the platform that runs a family-owned cruise agency.
π Machine Learning Engineer (Hybrid) at Provision
Django Developer at The Cruise Brothers
Full Stack Software Engineer (Hybrid) at Provision
Projects
gettranslatebot/translatebot-django
Translates .po files and model fields with an LLM, but only the new and changed strings, using a TRANSLATING.md glossary in your repo to keep terminology consistent between runs. Placeholders and HTML tags survive intact.
lincolnloop/django-absurd
Plugs Absurd, a Postgres-native workflow engine, into Django's Tasks framework so background tasks and durable workflows run on the database connection you already have. Needs Django 6.0+ and psycopg 3.