Manage related models on one page - like in django's admin

Hello. I have 3 models:

class Person(models.Model):
    name = models.CharField(max_length=50)


class Skill(models.Model):
    skill_name = models.CharField(max_length=100)
    person = models.ForeignKey(Person, on_delete=models.CASCADE, related_name="skills")


class WorkHistory(models.Model):
    company_name = models.CharField(max_length=100)
    person = models.ForeignKey(Person, on_delete=models.CASCADE, related_name="workhistories")

In the django’s admin panel I can manage all 3 models on one page:

In the django’s admin panel I can dynamically add or remove related models. Works lovely. But I need to create identical funcionality without using django’s admin panel. Do you know how to do it? I don’t want to reinvent the wheel. I searched the internet, but didn’t find nothing interesting. What are the best practices? Maybe you found any tutorial/solution on the internet?
Thank you

What you’re looking for are Django’s formsets. They are the facility provided by Django for working with multiple instances of the same form on a single page.

Also, if you’re looking to add / delete instances of that form on a page, you’ll need to write some JavaScript to manage that interaction - unless you’re willing to have each action perform a full-page refresh.

If these are single instances of different models, then you can just include those models on a page. However, I recommend against using any of the Django-provided generic CBVs for this beyond (possibly) View. Those views really are intended to be used with a single model and form, and you end up needing to do a lot of work getting them to work with multiple different objects.