Turning Django Admin into a Company Dashboard and Completing My Placement Portal MVP
Today, I completed the foundational MVP of my Placement Portal.
The final step was customizing Django Admin to behave differently for Company users.
Initially, I had two approaches:
- Override Django Admin templates.
- Customize the Admin classes themselves.
I decided to go with the second approach because it is significantly lighter and easier to maintain.
Custom Company Dashboard
By overriding the changelist_view() method:
- Superusers continue to see the list of all companies.
- Company users are automatically redirected to their own profile page.
The flow looks like this:
Company User → Company Admin → Redirect → Company Profile Update Page
This provides a dashboard-like experience without building an entirely new frontend.
Fieldset Customization
The next problem was restricting which fields Company users can edit.
By overriding the get_fieldsets() method:
- Superusers can view every field.
- Company users see only the fields relevant to them.
For example:
- Admin users can view the User foreign key.
- Company users cannot.
This keeps the interface simple while preventing accidental or unauthorized modifications.
Why Customize Django Admin?
Building a separate dashboard would require:
- Additional APIs.
- Additional frontend pages.
- Additional permission handling.
- Additional maintenance effort.
Django Admin already provides:
- Authentication
- Permissions
- Forms
- Querysets
- CRUD operations
Leveraging existing tools allowed me to finish the MVP faster while maintaining security and usability.
MVP Foundation Completed
With this implementation, the foundational MVP of my Placement Portal is complete.
The next major milestones are:
- Add-on features
- Performance improvements
- Production deployment
Building the MVP foundation taught me that shipping a working system is often more valuable than building every possible feature before launch.