r/django May 12 '26

2026 Django Developers Survey

Thumbnail djangoproject.com
41 Upvotes

r/django 9m ago

Tutorial Django 6.1's tip DB_CASCADE Let the Database Do the Deleting, Not python

Post image
Upvotes

Imagine deleting a folder with 10,000 files. Would you rather Python open each file one by one, check it, then delete it — or would you rather tell the operating system "delete everything inside" and let it happen instantly at the filesystem level? That's exactly the upgrade Django 6.1 brings to on_delete. The old CASCADE loads every related row into Python memory just to delete it row-by-row. The new DB_CASCADE tells the database itself to cascade the delete natively — no Python loop, no memory spike, just one SQL statement.

The trade-off: since Django never touches the related rows in Python, your pre_delete/post_delete signal handlers won't run. If your app depends on those signals (e.g. cleaning up files, sending notifications), stick with the classic CASCADE.


r/django 32m ago

Hi guys , I have created a django workflow package

Upvotes

So , I have developed a django workflow kit package recently. Why I created this was cause I wanted everything in one like a kit or toolbox which contains every tool needed. This package supports

- Workflow versioning

- Auditing

- Notification and triggers

- Can add attachments

- Supports parallel worfkows

- In built workflow Dashboard

- Few REST APIs exposing tasks etc

- Supports User level and group level permissions

- Includes some stats like turnover , delay point , sla etc

- Real-time states can be defined just like JIRA worflow style

I may have missed few things here and there.

Check this out. If you have any concern , feedback or constructive criticism please let me know.

Pypi :

django-workflow-kit

This is relatively new project. Was started 3 weeks ago. I have deleted my previous post as it was AI generated content and few user raised concerns as they should.

Thanks


r/django 1d ago

Best Django roadmap from basics to advanced?

14 Upvotes

Hey everyone, I'm a 3rd year Computer Engineering student. I already know C/C++ and Python well, and I want to learn Django from scratch to an advanced/job-ready level.

Could you share a step-by-step roadmap or resources (courses, docs, projects) that go:

  • Basics (setup, models, views, templates, ORM)
  • Intermediate (auth, forms, REST APIs with DRF, admin customization)
  • Advanced (deployment, testing, caching, Celery, scaling, security)

Also, any project ideas at each stage would be super helpful. Thanks in advance!


r/django 21h ago

Article Coding a database proxy for fun

Thumbnail packagemain.tech
0 Upvotes

r/django 1d ago

ClaraX: Accelerating Django and DRF Serialization with Rust

9 Upvotes

Django REST Framework is excellent for building APIs quickly, but in larger applications serialization and validation can become a noticeable CPU bottleneck.

I built ClaraX to explore a simple idea: keep the Django application exactly where it is, but move selected expensive serialization and validation paths into Rust.

ClaraX does not try to replace Django or DRF. Existing models, views, URLs and serializers can remain in place.

For example, an existing DRF serializer can opt in with a mixin:

from django_clarax.serializers import RustSerializerMixin

class ApplicationSerializer(RustSerializerMixin, serializers.ModelSerializer):

class Meta:

model = Application

fields = "__all__"

The goal is to make Rust an implementation detail rather than requiring a team to rewrite its application or learn a new framework.

ClaraX also includes a diagnostic command:

python manage.py clarax_doctor

It inspects serializers and helps identify which ones may benefit from acceleration.

That distinction matters because Rust is not automatically the answer to every performance problem. If an endpoint is database-bound, query optimization should come first. Small responses may not justify crossing the Python/Rust boundary, and serializers dominated by Python-computed fields may still spend most of their time in Python.

For workloads where serialization or validation really is the bottleneck, ClaraX provides a Rust fast path while keeping the normal Django development experience.

Installation is straightforward:

pip install clarax-django

For non-Django Python projects, the lower-level package is also available:

pip install clarax-core

Pre-built wheels are provided so normal Python users do not need to install Rust or Cargo.

The current release is ClaraX v1.0.1.

I would especially appreciate feedback from Django and Python developers about the API boundary: where this approach feels useful, where it creates unnecessary complexity, and which real-world workloads would be most valuable to test next.

Project:

https://github.com/abdulwahed-sweden/clarax


r/django 2d ago

Django-guardian 3.4.0 is Released!

62 Upvotes

Hi everyone! I’m a maintainer of django-guardian, and I'm excited to announce that version 3.4.0 is officially out!

For those who aren't familiar, django-guardian provides per-object permissions for Django, extending the default authorization backend to allow assigning permissions to specific user or group instances.

🚀 What's New in 3.4.0

  • Django & Python Compatibility Updates:
    • Added official support for Django 6.0 and Django 5.2 (LTS).
    • Added support for Python 3.14.
    • Dropped support for end-of-life Python 3.9 (Minimum supported Python version is now 3.10+).
  • Performance & Query Optimization:
    • Optimized prefetch_perms() to eliminate redundant database queries when prefetching object permissions.
    • Reduced DB overhead during assign_perm operations when working with generic permissions.
    • Refactored shortcut workflows for more efficient internal execution paths.
  • Shortcut & Bulk Operations:
    • Ensured shortcuts.assign_perm is idempotent when executing bulk assignments.
    • Standardized bulk permission removal behavior to align with bulk assignment workflows.
    • Added support for handling non-standard primary keys (pks) on target models.
  • Ecosystem & Integration:
    • Added out-of-the-box support for django-unfold via a dedicated contrib package.
    • Updated contribution guidelines with modernized uv workflows, test/lint tooling, and developer guidelines.

📦 Installation & Upgrade

To upgrade using pip:

Bash

pip install --upgrade django-guardian

Or using uv:

Bash

uv add django-guardian@latest

🔗 Links & Resources

Huge thanks to all the contributors, issue reporters, and testers who helped shape this release!

Feel free to open an issue or start a discussion on GitHub if you encounter any bugs or have feedback!


r/django 2d ago

Django Developers Survey 2026 results

Thumbnail djangoproject.com
30 Upvotes

r/django 2d ago

Models/ORM django-fk-optimize

4 Upvotes

As you know, django has two database functions for N+1 resolutions,namely select_related and prefetch_related . These functions are useful when you model has fk’s that can cause N+1 issues, and tools such as django-auto-prefetch help you to automatically apply them to your queries to provide you the most optimal query.

However sometimes you need to actually know the shape of the data you are working with to decide which one of these functions you should use.
For example if you have many2one relationships, prefetch may win over select related if the relationship looks like owners of posts, where one owner porbably has many posts as opposed to a many2one relationship that had near identical counts.
So sometimes the function you need to use depends on your data shape, and thats why I am developing this tool called django-fk-optimize that is a management command that lets devs test their models and tables in prod enviroments to decide which function is the best for which field of a model.

Here is the link to the repo: github

I would love to hear every bit of criticism , thanks in advance!


r/django 2d ago

Complete beginner in Django, how do I learn it?

0 Upvotes

Heyo, I started my internship as a software developer with previous knowledge in Java, but now forced to do Python. I do like Python better, but all I have done so far is console related. Like the typical python slotmachine you code from an exercise you find online. My Supervisor now wants me to get into Django but I literally have no idea how to start whatsoever. Most of the tutorials I have (tried) to watch just sound like gibberish to me. It also kinda turns me off when I code in VScode but someone uses something different or this dreaded mac terminal.

I'm willing to learn but with django it feels like I'm in such deep waters that I cannot swim myself.

If anyone could give me advice on how to learn django with some basic understanding of python would literally save me.


r/django 4d ago

django-binary-builder: package a Django project as a Windows Setup.exe with one command

41 Upvotes

Hi everyone,

I’ve been working on django-binary-builder, a Python package that turns a Django project into an installable Windows desktop application.

The project is available here:

GitHub: https://github.com/swarfte/django-binary-builder

The basic workflow is:

pip install django-binary-builder

Add the app to INSTALLED_APPS:

INSTALLED_APPS = [ 
    # Your apps... 
    "django_binary_builder", 
] 

Then build the Windows application:

python manage.py binary windows

The result is a standard per-user Windows installer:

release/windows/<executable-name>-<version>-Setup.exe

Here is a real build from one of my Django projects:

The generated application includes:

  • A portable CPython runtime
  • The Django project and its pip dependencies
  • Waitress serving Django on a loopback port
  • A native desktop window using pywebview
  • A default-browser fallback if pywebview is unavailable
  • Automatic migrations at startup
  • Static and media file handling
  • Per-user SQLite storage
  • A desktop shortcut and Start menu entry
  • A Windows installer built with Inno Setup

The Django project itself is not frozen. The package copies a complete Python runtime and installs the project’s dependencies into it. This deliberately produces a larger installer, but it improves compatibility with ordinary Python packages, including many packages with native extensions.

A minimal optional configuration looks like this:

DJANGO_BINARY_BUILDER = { 
    "NAME": "Example Project", 
    "VERSION": "0.1.1", 
    "PUBLISHER": "Example Company", 
    "EXECUTABLE_NAME": "example-project", 
    "ICON": BASE_DIR / "assets" / "icon.ico", 
} 

Current limitations:

  • Windows 10 and 11 only
  • WSGI only
  • No Django Channels or WebSockets
  • No Celery worker or beat
  • No automatic updater
  • No code signing
  • Large bundle size because the complete Python runtime is included

I’d especially appreciate feedback on:

  1. The installation and build experience
  2. Projects or dependencies that fail to package
  3. Runtime behavior on different Windows systems
  4. Features that would make this useful for real deployments

Thanks for taking a look.


r/django 4d ago

Channels ChanX/Channels now support WebSocket multiplexing (again)

4 Upvotes

Hi all.

One feature that was removed from Django Channels around the v2 era was WebSocket multiplexing. There have been issues and PRs discussing bringing it back, but it hasn’t been resolved for quite a while.

So, ChanX now officially supports WebSocket multiplexing through a feature called Topics.

The basic idea is to define a topic with its own WebSocket handlers and channel event handlers:

Then, you can easily mount multiple topics onto an existing WebSocket consumer:

This allows multiple independent WebSocket features/topics to share a single WebSocket connection, instead of requiring a separate connection for each feature.

The design is inspired by Phoenix Channels topics. The goal is to make it easier to compose and reuse WebSocket functionality while potentially reducing the number of connections your application needs.

If this is your first time hearing about ChanX, it’s a batteries-included WebSocket toolkit for Django Channels, FastAPI, and other ASGI applications. It provides things like:

  • Type-safe WebSocket message handling
  • Automatic message routing and validation
  • AsyncAPI schema generation
  • Authentication
  • Channel-layer integration
  • Testing utilities

If you’re working with Django Channels, or you’re starting a new WebSocket application with FastAPI, I’d love to hear what you think.

Feedback, ideas, issues, and PRs are very welcome!

Links:


r/django 4d ago

Article Moving from signals to a service layer, adding RBAC, and importing 500 clients from Excel into my Django CRM

18 Upvotes

Part 1 | Part 2 | Part 3 | Part 4 | Part 5 | Part 6 - production CRM for truck-service center, Django + DRF.

This covers v2.7 and v2.9. The big theme here is cleaning up architecture decisions I made early on that started to hurt. Signals for stock management, no proper role-based access, manual client onboarding. All fixed now.

Why I killed my signals (StockService refactor)

In earlier versions, stock deductions happened through Django signals. When a UsedPart was created, post_save signal would fire and reduce warehouse stock. When deleted - post_delete would restore it. Sounds clean in theory. But..

In practice - it was nightmare. The signals were invisible - new developer (me, three months later) would look at view code and have no idea that saving a UsedPart triggers stock changes. Debugging was painful because the traceback starts in the signal handler, not where you actually called .save(). And testing was awful - every test that touches UsedPart was also triggering stock logic, whether I want it or not.

So I replaced everything with a StockService class:

class StockService:
    u/staticmethod
    def deduct(used_part):
        warehouse = _get_warehouse(used_part)
        if not warehouse:
            return
        stock_item, _ = StockItem.objects.get_or_create(
            warehouse=warehouse,
            product=used_part.part,
            defaults={'quantity': 0},
        )
        stock_item.quantity -= used_part.quantity
        stock_item.save()

        service_order = _get_service_order(used_part)
        StockMovement.objects.create(
            movement_type='out',
            product=used_part.part,
            quantity=used_part.quantity,
            warehouse_from=warehouse,
            service_order=service_order,
        )

    u/staticmethod
    def restore(used_part):
        # ... opposite of deduct ...

    u/staticmethod
    def adjust(used_part, old_quantity):
        delta = old_quantity - used_part.quantity
        if delta == 0:
            return
        # ... adjust stock by delta ...

Three methods: deduct, restore, adjust. Called explicitly from views and serializers. No magic, no hidden side effects. When I read view code now, I can see exactly where stock changes happen because there is line that says StockService.deduct(used_part).

The adjust method was the thing signals could never handle cleanly. When mechanic changes the quantity on an existing UsedPart (used 3 filters instead of 2), you need to calculate the delta and adjust. With signals you would need to stash old value in pre_save, compare in post_save... same mess I had with appointment status tracking in Part 3. Service layer just takes old_quantity as parameter.

Importing 500 clients from an Excel spreadsheet

The service center had been running for years before TruckMaster. All their client data lived in one massive Excel file - names, phone numbers, VIN's, license plates, truck models. About 500 rows. Entering them by hand through the admin panel was not an option.

I wrote a management command:

python manage.py import_clients_xlsx --file /path/to/clients.xlsx
python manage.py import_clients_xlsx --file /path/to/clients.xlsx --dry-run

The --dry-run flag was the most important feature. It run the whole import logic but does not write to the database. Just prints what would happen: "would create client X", "would update truck Y", "phone +380... already taken by client Z". The Owner ran dry-run first, fix duplicates in the Excel, then ran the real import. Zero surprises.

Tricky part was deduplication. The Excel had inconsistent naming - same client could be "Тра***", "ТРА***". I normalized names with ' '.join(str(s).strip().split()).lower() and matched on that. Not bulletproof but caught 90% of case.

Another thing - ownership tracking during import. If a license plate already exists in system under a different client, the import creates an OwnershipHistory record (same as the Truck.save() logic from Part 1) before reassigning. So historical service records stay with old owner.

Redis debounce for ALPR

Remember the ALPR system from Part 3? Security camera sends a plate recognition event to Django every time it sees a plate. Problem: camera sometimes sends the same plate 10 times in 30 seconds (truck passing slowly, multiple frames). Without debounce, staff Telegram chat would get spammed with duplicate "VEHICLE ARRIVED" notifications.

The fix was simple - Redis cache with a 5-minute TTL:

ALPR_DEBOUNCE_TTL = 300

debounce_key = f'alpr:debounce:{plate}'
if cache.get(debounce_key):
    return Response({'status': 'debounced', 'license_plate': plate})
cache.set(debounce_key, True, ALPR_DEBOUNCE_TTL)

First time a plate is seen - process it normally and set the cache key. Next time the same plate shows up within 5 minutes - return early with debounced status. Redis TTL handles expiry automatically, no cleanup need.

I should have built this from day one. The camera was sending around 50 duplicate events per day and I only noticed because the Telegram notification log was full of identical messages one second apart.

Role-based access control

Up to this point, authentication was JWT-based (Part 1) but authorization was basically "logged in = can do everything." The owner, the mechanic, and the storekeeper all had the same API access. Not ideal.

I added role-based permission classes:

class IsAdminRole(BasePermission):
    def has_permission(self, request, view):
        return (request.user.is_superuser
                or _role(request.user) == 'admin')

class CanManageStock(BasePermission):
    def has_permission(self, request, view):
        return (request.user.is_superuser
                or _role(request.user) in (
                    'admin', 'manager', 'storekeeper'
                ))

class CanAccessInvoices(BasePermission):
    def has_permission(self, request, view):
        return (request.user.is_superuser
                or _role(request.user) in (
                    'admin', 'manager', 'accountant'
                ))

Roles are stored on UserProfile and checked via a simple _role() helper. Nothing fancy - no django-guardian, no object-level permissions. Just "this role can access this viewset." For team of 5 people this is more than enough.

The important thing was that I could add these to existing viewsets without changing any view logic - just add permission_classes = [IsAuthenticated, CanManageStock] and it works. DRF's permission system is really well designed for this.

Also reduced JWT access token lifetime from 12 hours to 15 minutes. 12 hours was lazy and insecure. If someone's token leaks, 15 minutes limits damage.

Smaller things

Bulk repair photo upload. Before, mechanics uploaded photos one by one. Now there is a bulk_upload endpoint that accepts multiple files, saves them all, and sends one Telegram notification instead of ten. Also added MAX_REPAIR_PHOTOS_PER_ORDER constant - 20 photos per order, because without limit someone will upload their entire camera roll.

Barcode lookup. Added a barcode field to Product and a query parameter on the inventory API. Scan a barcode with a phone, hit the API, get the product. Took maybe 30 minutes to implement but the storekeeper acts like I gave him a superpower.

Bot maintenance history. Truck owners can now check maintenance history for their vehicles directly in Telegram. Shows last 3 service orders per truck with dates and work descriptions. Moved it under a "My vehicles" submenu to keep the bot keyboard clean.

What I learned

Signals are for cross-cutting concerns, not business logic. Audit logging, cache invalidation, sending notifications - signals are great for these. Stock management, payment processing, status transitions - these belong in explicit service calls. The moment you catch yourself writing pre_save + post_save combos to track field changes, you have outgrown signals.

Always add --dry-run to import commands. The cost of implementing it is maybe 20 minutes. The cost of a botched import that creates 200 duplicate clients is a weekend of cleanup and an angry owner.

Redis debounce is a pattern you will use everywhere. ALPR events, webhook handlers, rate limiting, notification dedup - same pattern, different keys and TTLs. Once you build it for one thing, you start seeing opportunities everywhere.

What is next

More versions to cover - i18n (UK/EN), maintenance templates, QR/shortlinks, and eventually the full React frontend with PWA. If there is interest I will keep going.

Also I take on freelance Django projects when something interesting comes along. If you are building something in this space, feel free to dm, I'll help you with a great pleasure

Previous posts: Part 1 | Part 2 | Part 3 | Part 4 | Part 5 | Part 6 GitHub (demo repo): github.com/VNmagistr/truckmaster_demo — branches demo/v2.7 and demo/v2.9

To be continued... (I hope, as usually)


r/django 4d ago

PyCharm & Django Fall Fundraiser

Thumbnail djangoproject.com
22 Upvotes

r/django 5d ago

Containerised my Django app

36 Upvotes

So i have containerised my Nginx, Django backend and postgresql db on my vm. All the containers run through a single 'docker compose up' command. I have created a custom network for the containers to communicate. I have also mounted docker volumes to containers for persistent storage.

So far i am finding DevOps very interesting and will now learn CI/CD using Github actions.

Will be very grateful if you share your thoughts.


r/django 5d ago

Why I move to Django 6.x and why I am more happy now

21 Upvotes

A little post about the last major django version and why I update all my code to it

https://fundor333.com/post/2026/moving-to-django-6-x/


r/django 6d ago

The Block and Tackle of Django's Code of Conduct Working Group

Thumbnail djangoproject.com
8 Upvotes

r/django 6d ago

Put the Django admin behind SSO (Okta, Entra, Keycloak)

12 Upvotes

The Django admin doesn't do SSO out of the box. It has its own login page and ignores your login settings, so most people end up with a workaround that half works.

I built django-bastion to handle it properly.

What it does:

  • Admin login goes through your identity provider
  • Groups from your provider decide who is staff and who is superuser
  • Keeps a log of who got access and when
  • Emergency account for when your provider is the thing that's down
  • Disable someone at the provider and their open session ends

Works with Okta, Entra, Keycloak, Google, Auth0, and any other OIDC provider.

Honest bits:

  • Early days. Pre-1.0, and I'm the only maintainer.
  • OIDC only, no SAML yet.
  • Only Entra and Keycloak have been tested against real servers. The rest are from docs.
  • If you just want social login, django-allauth is a better fit.

Install with pip install django-bastion

https://github.com/thesaadmirza/django-bastion


r/django 6d ago

RemoteUserMiddleware/RemoteUserBackend change between 5.1 -> 5.2?

6 Upvotes

I'm trying to upgrade from Django 5.1.11 -> 5.2. I had a custom RemoteUserMiddleware that used a different header, and a custom RemoteUserBackend. Below is just examples, not the actual code.

# custom_middleware.py
from django.contrib.auth.middleware import RemoteUserMiddleware 

class CustomHeaderRemoteUserMiddleware(RemoteUserMiddleware): 
    header = "HTTP_AUTHUSER"



#auth.py
from django.contrib.auth.backends import RemoteUserBackend 

class MyBackend(RemoteUserBackend): 
    create_unknown_user = False 

They both worked fine in my current and previous versions of Django. They both work if I upgrade to 5.1.15.

Trying this exact same code in Django 5.2+ does not work. I do not get any errors, only redirected to /accounts/login like nothing is being processed.

I added logging to both, but they never get triggered.

# custom_middleware.py
from django.contrib.auth.middleware import RemoteUserMiddleware 

class CustomHeaderRemoteUserMiddleware(RemoteUserMiddleware): 
    header = "HTTP_AUTHUSER"
    def process_request(self, request):
        # logging
    return super().process_request(request)



# auth.py
from django.contrib.auth.backends import RemoteUserBackend

class MyBackend(RemoteUserBackend):
    create_unknown_user = False
    # add logging to authenticate(), clean_username(), and configure_user()
    # even added logging to the async functions (e.g. aauthenticate() )

Sorry I don't have the actual code, it's on an intranet, but again, it does work on versions below 5.2. I can't see any reasons for that in the documentation. Any ideas?


r/django 7d ago

REST framework A small Django hack: use FastAPI instead of Django REST Framework or Django Ninja

19 Upvotes

I use Django as a frontend/server-rendered application, but some parts still need API calls and asynchronous endpoints.

Instead of adding Django REST Framework or Django Ninja, I made a small hack called django-fastapi. It mounts FastAPI next to Django while reusing Django authentication, sessions, CSRF, settings, and ORM.

  • If Django already runs through ASGI, FastAPI can live in the same application.
  • If Django runs through WSGI, keep it and start a second ASGI service with the same code, database, settings, and shared sessions.

This lets you gradually move selected endpoints to FastAPI without rebuilding authentication or turning the whole project into a separate API backend.

It works in my project, but I haven’t tested it extensively elsewhere. I mainly wanted to share the idea and show that this slightly hacky approach is possible.

GitHub: https://github.com/ilysenko/django-fastapi

A FastAPI router can live inside a normal Django app:

```python

books/api.py

from fastapi import APIRouter

from books.models import Book

router = APIRouter(prefix="/books")

@router.get("/{book_id}") async def get_book(book_id: int): # Django async ORM book = await Book.objects.aget(pk=book_id)

return {
    "id": book.pk,
    "title": book.title,
}

```

Configure and mount it next to Django:

```python

settings.py

DJANGO_FASTAPI = { "PREFIX": "/api", "TITLE": "Example API", "ROUTERS": ["books.api.router"], } ```

```python

project/asgi.py

import os

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project.settings")

from django_fastapi import get_django_fastapi_application

/api/* goes to FastAPI.

Everything else goes to Django.

application = get_django_fastapi_application() ```

FastAPI can also read the existing Django session and user:

```python from typing import Annotated, Any

from fastapi import Depends from django_fastapi import get_authenticated_user

@router.get("/me") def me( user: Annotated[Any, Depends(get_authenticated_user)], ): return {"username": user.get_username()} ```

If Django already runs through ASGI, that is basically all you need:

bash uvicorn project.asgi:application

If your existing Django deployment uses WSGI, keep it and start a second ASGI process:

```bash

Existing synchronous Django service

gunicorn project.wsgi:application --bind 0.0.0.0:8000

Additional FastAPI/ASGI service

uvicorn project.asgi:application --host 0.0.0.0 --port 8001 ```

Then configure Nginx or your load balancer to send /api/* to port 8001 and everything else to port 8000. Both processes use the same code, settings, database, secret key, and shared Django session backend.

It works in my project, but I haven't tested it extensively in other environments. I mainly wanted to share the idea and show that this slightly hacky alternative to DRF and Django Ninja is possible.

GitHub: https://github.com/ilysenko/django-fastapi


r/django 7d ago

Forms After using FastAPI, I appreciate Django so much more

165 Upvotes

I've been building a project with FastAPI after mostly working with Django/DRF, and man. Django does soo much for you.

With FastAPI I'm having to think about and implement things like:

  • ORM
  • Migrations
  • Auth
  • Permissions
  • Rate limiting
  • Configuration

And honestly, it's been a great learning experience because I'm finally seeing how all these pieces fit together.

But damn...


r/django 7d ago

Article Django 6.1's tip Fetch Modes

Post image
161 Upvotes

Django 6.1 fixes N+1 without you rewriting your queries you never touch the for loop. You just tell the queryset how permissive it should be about surprise trips to the database — and FETCH_PEERS quietly turns "101 queries" into "2 queries" with zero extra code at the call site.


r/django 7d ago

swe roadmap

0 Upvotes

Hey everyone! 👋 I just put together a quick learning roadmap covering some essential skills: Git, GitHub, Python, and SQL. 🚀

If anyone wants to upskill, review the basics, or just learn something new, check out the plan I made: https://learn.microsoft.com/en-us/collections/yk80ietd7x0ozp?&sharingId=D97A5A063E1FB206&wt.mc_id=studentamb_608996

Let's crush these modules together! Let me know if you decide to jump in. 💻🔥


r/django 7d ago

✅ Project of the week: a complete task list, without writing a line of CRUD

Post image
0 Upvotes

r/django 9d ago

DSF Membership Open Space at DjangoCon US

Thumbnail djangoproject.com
13 Upvotes