Products · Product
Django
Raised as a usability problem by 211 people on Hacker News over 19 years (2008–2026), in 167 threads.
No issue was raised by at least 3 people in 3 threads this year.
- 1
- 2Getting Django set up took hoursUnreviewed
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Every issue, all time, most people first
Hard to set up email usernames or add custom User fieldsUnreviewed
20082026- Deviating from default user model to username login is a pain2019-09-10
- Hard to set up email usernames or add custom fields to the User model2017-10-08
- Hard to figure out how to set up email login; migrations confusing, typos force starting over2015-12-02
Getting Django set up took hoursUnreviewed
20082026- Django templates are very slow and hard to debug2023-01-03
- Enterprise app built on Django is slow, routinely breaking its SLAs2019-05-04
- Hard to use Django for async ops, long-running processing, or tracking changes2017-03-26
ORM code for complex queries becomes unreadable and noisyUnreviewed
20082026- Complex queries in the ORM's special query language are hard to understand compared to SQL2026-07-04
- ORM query layer is unlike SQL and has pitfalls, forcing raw-SQL round-trips2025-07-14
- ORM code for complex queries becomes unreadable and noisy2023-08-14
Customizing the admin takes longer than building forms directlyUnreviewed
20082026- Default admin UI feels old and customizing it gets messy as projects grow2026-03-05
- Simple customizations like custom admin links or nested forms take days to figure out2017-11-01
- Hard to customise admin into something more user friendly than a database GUI2015-05-08
Template system causes repetition and hard-to-test branching in complex casesUnreviewed
20082026- Forced to write template tags instead of inline logic, making templates slower to write and harder to debug2024-12-12
- Template system is hard to use for complicated scenarios, causing repetition and hard-to-test branching2020-08-04
- Makes it hard to do per-item iteration in templates, forcing awkward workarounds2014-03-23
Lazy loading silently causes n+1 queries and slow performanceUnreviewed
20082026- Lazy loading silently causes n+1 queries and unbearable performance, easy to hit by accident2026-08-06
- Implicit lazy queries make performance problems hard to trace and easy to create2021-09-22
- Hidden lazy loading makes weird issues hard to debug; simple scripts take 2-3 seconds to start2017-01-19
Deep inheritance trees make it hard to find where things happenUnreviewed
20082026- Overcomplicated inheritance trees make it impossible to find where things happen when debugging2024-11-04
- Inheritance tree is so deep that understanding views and overriding methods is hard2023-04-04
- Magic and deep inheritance make it hard to know what code does or find errors2018-11-29
Projects and apps relationship is confusing for beginnersUnreviewed
20082026- Projects and apps relationship is confusing and poorly documented for beginners2019-04-01
- Confusing file layout and unclear docs about dividing projects into apps2017-05-17
- Finds the project/app distinction confusing and wishes apps were standalone2013-08-02
Hard to figure out how to customize through many overridesUnreviewed
20082026- Hard to figure out how to customize; many overrides and clunky model/form changes2021-10-15
- Tweaking styles and fields is too complicated, needing ugly hacks for simple changes2012-08-19
- Customizing form field sets and error reporting requires many hoops and digging through source2012-06-07
Unreviewed issues were grouped by machine: Claude Haiku labelled each comment as a usability complaint, named what it's about and summed up the problem in a line, and a small model grouped similar problems. Nobody has checked them by hand. Expect mistakes.
The newest 50 complaints
- Can't quickly find view fields, their explanations, and when to use them2026-08-06
- Queries fetch every column by default, forcing manual defer() workarounds and reflective helper functions2026-08-06
- Lazy loading silently causes n+1 queries and unbearable performance, easy to hit by accident2026-08-06
- Working with websockets in Django is so cumbersome and confusing it is painful2026-07-27
- Feels harder to do routine tasks in than other web frameworks, with more friction2026-07-26
- Complex queries in the ORM's special query language are hard to understand compared to SQL2026-07-04
- Mature apps hide behavior in magic filenames, naming conventions and regexp URL routing2026-06-14
- Default admin UI feels old and customizing it gets messy as projects grow2026-03-05
- Interactions feel slow and laggy because the framework is very slow2026-02-20
- Commenter could not find the architecture explanation in the docs2025-12-31
- Hard to handle multiple databases with their idiosyncrasies, needing manual workarounds2025-12-10
- Manager interface is confusing at first for newcomers2025-12-10
- API index is hidden and API pages show undocumented type interfaces2025-12-05
- Filtering an aggregated queryset silently aggregates again, producing wrong results2025-10-12
- Tutorial required installing specific versions of Vagrant, VirtualBox and Chef, which were broken and hard to install2025-10-07
- ORM query layer is unlike SQL and has pitfalls, forcing raw-SQL round-trips2025-07-14
- Every DB query had to be wrapped in sync_to_async, creating too much boilerplate2025-01-15
- Forced to write template tags instead of inline logic, making templates slower to write and harder to debug2024-12-12
- Weird joins via underscore counting and horrible, nonsensical error messages2024-12-12
- Queries are verbose, requiring Model.objects every time for no good reason2024-12-11
- Field defaults and not-null behavior are easy to misjudge, causing crashes during separate migration and code deploys2024-12-11
- Editors can't infer types or show options for **kwargs, so developers must manually look up docs2024-11-08
- Overcomplicated inheritance trees make it impossible to find where things happen when debugging2024-11-04
- Can't find documentation the user knows exists; SEO results push tutorial sites up2024-09-20
- Doing a GROUP BY through the ORM requires reading docs first2024-09-01
- Long functions with repetitive get/list/update names leave the reader unsure which function they are in2024-04-29
- Migrations are tied to manage.py, so they're hard to use without full boilerplate setup2024-04-24
- Hard to tell what the entry point is and where the flow goes2024-04-24
- Documentation doesn't explain how to handle many-to-many; several approaches tried, only two worked2024-03-17
- Model validation is confusing, split across full_clean, Form.full_clean and DRF2024-02-05
- Must work out implementing users, signin, and password reset from scratch despite batteries-included claim2024-01-25
- Must hand-write repeated serializer and CRUD endpoint code, which is tedious2023-12-14
- Login is a pain to build for internal web apps2023-12-05
- Cannot mix the ordering of fieldsets and inlines; workarounds are hacky2023-12-05
- Gets painful without out-of-box classes; much code, hard to maintain2023-12-04
- Modals can't be moved or left aside, and dismissing one discards the user's input2023-10-28
- Redesigned admin panel made users lose track of whether they were in admin or main site2023-10-27
- Losing context and harder keyboard/screen reader navigation when tasks open in separate windows2023-10-27
- Basic accessibility problems and outdated design patterns hurt the user experience2023-10-27
- Coworker found the interface confusing while uploading files and filling forms2023-10-27
- Heavy documentation to read before starting, plus footguns that make mistakes easy2023-09-13
- Gets very confusing with its abstraction for complicated stuff2023-09-12
- ORM code for complex queries becomes unreadable and noisy2023-08-14
- Generic startup error message hides many possible causes, making the real problem hard to find2023-07-22
- Hard to navigate; not obvious how to find needed howto or reference content2023-07-06
- Inheritance tree is so deep that understanding views and overriding methods is hard2023-04-04
- Foreign key dropdowns load every value, grinding to a halt on large databases2023-03-08
- Can't revert one migration in a diamond dependency, forcing manual SQL fixes in production2023-01-11
- Moving a model between apps forces a manual copy-rows-to-new-table workaround2023-01-11
- Django templates are very slow and hard to debug2023-01-03