11 Sep 2026
Django community aggregator: Community blog posts
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.
11 Sep 2026 3:00pm GMT
09 Sep 2026
Django community aggregator: Community blog posts
Weeknotes (2026 week 37)
Weeknotes (2026 week 37)
Tonight the temperature will drop to 10°C. I like it when it's hot, but now I really enjoy the slightly cooler temperatures in Europe. The last post was written in the middle of the heat wave. Yesterday we still had temperatures of over 30°C, which is a lot for September. But it will be the new normal. Next year probably won't be cooler.
Releases from the last four weeks
Lots of activity!
django-authlib
django-authlib 0.19 hardens the OAuth2 implementation a bit against replay attacks, provides utilities for removing password logins from the Django administration interface, and removes some of the confusion around role-based permissions. Upgrading is recommended.
django-content-editor
django-content-editor 9.0.2 fixes a bug in the function which allows cloning plugins from other regions. The bug was most visible when using something like django-json-schema-editor's plugins which are only proxy models. Their type was lost because I was using _base_manager, which didn't do the downcasting properly. (Sorry for the word salad.)
django-tree-queries
django-tree-queries 0.26.1 now uses annotations instead of .extra() to add the tree_path and tree_depth fields. This is great because the ORM knows these fields properly and we can now use e.g. .filter(tree_depth=1) instead of .extra(where=["..."]).
This change was mainly motivated by the renewed interest in deprecating .extra() at some unknown future point in time.
django-debug-toolbar
django-debug-toolbar 8.0 ships a new design! I again didn't contribute a lot, but I'm very proud that we were able to ship this as a team.
feincms3
feincms3 6.0.2 ships new utilities and, most importantly, fixes crashes when passing %00 to the root middleware. Using null bytes when comparing text field values on PostgreSQL leads to crashes. These are mostly an annoyance without data exposure, but definitely worth fixing.
The reason for the major version bump is that we finally dropped support for Django 3.2. That's the only breaking change, so upgrading should be easy for everyone.
django-js-asset
django-js-asset 4.1 fixes issues around lazy CSP nonce handling as well as the same issue Django itself had around rendering HTML-safe strings.
django-prose-editor
django-prose-editor 0.27.2 adds a default menu item for the code block extension and updates ProseMirror and Tiptap. It also adapts to the changed CSS of the Django 6.1 administration interface.
django-json-schema-editor
django-json-schema-editor 0.14.1 includes a fix for saving JSON schema fields when the schema doesn't contain any properties, plus fixes for the Django 6.1 admin CSS.
django-admin-ordering
django-admin-ordering 0.21 now activates orderables properly when the same model was orderable both in the change list and in the change form. I developed the fix for this in early 2025 but never released it. It's what happens.
feincms3-cookiecontrol
feincms3-cookiecontrol 1.7.2 includes bugfixes for edge cases while bringing down the byte count for the cookie banner and media embedding script from 3961 (in 1.7.1) to 3909 bytes.
feincms3-data
feincms3-data 0.11.1 brings fixes for handling unique fields when the same unique value is removed and then re-added with a different primary key.
django-translated-fields
django-translated-fields 0.14 contains no relevant code changes to the module itself at all. It was just time to release a new version more than two years after the last release to show that the project is still active and update the Trove classifiers.
09 Sep 2026 5:00pm GMT
08 Sep 2026
Django community aggregator: Community blog posts
Coding tactics: the series
Over the summer I published a series on coding tactics: the everyday craft of ifs, loops, and the reasoning behind them. Eight posts, one thesis, best read in order. This is the map.

08 Sep 2026 10:00am GMT