Exercise 3: Why the Missing Ownership Model Is a Genuine Gap, Not a Non-Issue — Possible Solution ==================================================================== WHY "DJANGO HAS AUTH BUILT IN" DOESN'T MAKE THIS A NON-ISSUE ------------------------------ django.contrib.auth being available in the framework is not the same thing as it being wired into this specific app. Availability is a capability; this course never actually added a ForeignKey from Item to a user model, never added login-required checks to any view, and never filtered any queryset by "whose items are these." The capability existing in Django generally doesn't retroactively make the actual, shipped code multi-user-safe. WHAT THE REAL GAP CONCRETELY MEANS ------------------------------ As built, every Item row in the database belongs to nobody in particular - there's no ownership field to filter by, which means if this app were ever actually opened up to more than one person, every user would see and be able to mark used or delete every other user's items, with no isolation at all. That's a real, exploitable gap in a genuinely multi-user deployment, not a theoretical one. WHY THIS DIFFERS FROM THE FIREBASE SIBLING COURSE ------------------------------ Food Tracker (React + Firebase) actually built Firebase Authentication and used it to scope data per user in its own Chapter 11. This course never did the equivalent - naming that difference honestly, rather than assuming Django's mere availability of auth machinery closes the same gap the other course closed by actually implementing it. WHY THIS WORKS AS AN ANSWER ------------------------------ It correctly distinguishes between a framework capability being available and that capability actually being implemented in this app's own code, correctly describes the concrete real-world consequence of the gap (no per-user data isolation), and correctly contrasts this course's own choice against the Firebase sibling course, which did implement it.