Proper architecture for Django CMS blog interface for non-staff users (content post writers)

I’m using Django to create a blog CMS for my philosophy society. We intend on having about half a dozen writers who will be posting academic essay content. We are expecting low traffic. My peers are non technical. I already have a WYSIWYG editor integrated in the Admin Dashboard. It works well with my placeholder content and Django is serving the essays and writer bio’s as intended so far.

The problem is this:

This image depicts what my Admin Dashboard looks like, and specifically the “contributors” web app with the Writers model showing 5 different instances of the model (pretend writers named: Matthew, Mark, Like, John, Phil). This placeholder data was entered by a staff Admin. So while this works as a prototype, what I need to do next is bind an admin user created to Writer model data entered. This can be achieved using a foreign key gymnastic (which I still need to do but is within the realm of possibility). I can figure that out. But even with that accomplished, the next problem I’d have to solve is that there is no User permission to grant a Writer the ability to view, change, delete, their own Writer profile but not other users. With my current model, one of these Writers will be able to view and change everyone else as you can see in this image of my Admin Dashboard:

Therefore, here is Main Question #1: How do I assign Admin Users permissions so that they can only view / change their own bios and can’t see / change other user’s (writer’s) bios?

One potential solution I can already think of (and have more than one good tutorial to guide me to implement it) is to just build out the ‘contributors’ web app further with a custom interface on the website so that the Writers don’t need to login to the Admin Dashboard and just login from the navbar, view their profile, add their biographical content, change this content, and then logout. To do so I can use Django’s terrific authentication decorators and mixins. I think I could handle that as well. I’d like to use that same technique for posting blog articles too. I can write a login/logout interface on the site (no Admin Dashboard access required) to post/enter their long-form essay content. The tutorials I have support that avenue. What my Django course material does not explain is how to build or integrate a WYSIWYG editor onto the site. My current WYSIWYG (CKEditor) requires Admin Dashboard access. That’s the next problem I need a solution to.

Here is a comparison chart courtesy of Django Packages with all kinds of WYSIWYG editor tools.

My Main Question #2 is now: How do I narrow down the WYSIWYG editors which integrate onto a Django site interface rather than in the Admin Dashboard?

I already experimented with Wagtail and Django CMS. I feel that they are “overkill”. By that I mean, the Wagtail Admin Dashboard has an unintuitive, unusual, and bizarre WYSIWYG editor. Django CMS is abstract and hard to use. I hesitate to go with a complete blog/CMS solution like those because customizing them to meet my use-case is like learning a whole new framework unto itself with an unnecessarily steep learning curve. I really like the way the custom Jazzmin theme turned out (screenshots above) so far because it’s polished and simple.

If I could just find a WYSIWYG editor tool to integrate into my website’s interface without requiring my blog post writers to login to the Admin Dashboard, then that’s all I’d need.

I am open and receptive to comments, recommendations, and suggestions.

What you want to do is spend some quality time reviewing the entire Django Admin docs, looking at all the functions already defined within the admin system that you can override in your ModelAdmin class. (In particular, see some of the functions starting at has_view_permission) You have complete control over what users see for any given page within the admin.

No, it does not. It might provide a plugin to automatically make it available within the Admin, but you can create a page using CKEditor in any page. Work your way through the docs starting at Quick start | CKEditor 5 documentation to understand how CKEditor works and can be integrated into your site.