Django - Как сделать модель, чтобы при создании экземпляра этой модели данные сохранялись на странице, уникальной для пользователя

Я создаю сайт, на котором можно размещать вакансии на "странице поиска", и мне стало интересно, как сделать так, чтобы при размещении вакансии на "странице поиска", эта вакансия также размещалась на странице, где человек, разместивший вакансию, мог управлять всеми размещенными им вакансиями, т.е. редактировать, удалять. Я могу размещать вакансии на странице изучения, но мне нужно найти способ сохранения вакансии на странице "работодателей"

views.py

from django.shortcuts import render, redirect
from django.contrib.auth.decorators import login_required
from base.forms import JobForm

@login_required(login_url='login')
def manage_jobs(request):
    if request.user.is_employee:
        return redirect('home')
    else:
        form = JobForm(request.POST)
        if form.is_valid():
            form.save()
        context = {"form":form}
        return render(request, 'employer/manage-jobs.html', context)

urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.manage_jobs, name='manage-jobs'),
]

models.py

class Job(models.Model):
    company = models.CharField(max_length=40, null=True, verbose_name="Company/Employer")
    description = models.TextField(null=True)
    role = models.CharField(max_length=25)
    area_of_filming = models.CharField(max_length=50, verbose_name="Area Of Filming", default="")
    contact_email = models.EmailField(verbose_name='Contact Email', max_length=60, default='')
    created = models.DateTimeField(auto_now_add=True)   

    def __str__(self):
        return self.company


class Account(AbstractBaseUser):
    email = models.EmailField(verbose_name='email', max_length=60, unique=True)
    name = models.CharField(max_length=45, unique=False)
    date_joined = models.DateTimeField(verbose_name='date joined', auto_now_add=True)
    last_login = models.DateTimeField(verbose_name='last login', auto_now=True)
    is_admin = models.BooleanField(default=False)
    is_active = models.BooleanField(default=True)
    is_staff = models.BooleanField(default=False)
    is_superuser = models.BooleanField(default=False)
    is_employee = models.BooleanField(default=True, verbose_name='Are you using FilmLink as an employee?')

    USERNAME_FIELD = 'email'
    REQUIRED_FIELDS = ['name', 'is_employee']

    objects = MyAccountManager()

    class Meta:
        permissions = [
            ("post_jobs", "Can post jobs"),
        ]

    def __str__(self):
        return self.name

    def has_perm(self, perm, obj=None):
        return True

    def has_perms(self, perm):
        return True

    def has_module_perms(self, app_label):
        return True

    @property
    def is_staff(self):
        return self.is_admin

manage-jobs.html

<body>
<button id="myBtn">Post A Job</button>
    <div id="main"></div>
    <div id="myModal" class="modal">
      <div class="modal-content">
        <span class="close">&times</span>
        <form action="" method="POST">
          {% csrf_token %}
          <div id="company-container">
            <p>Employer Name</p>
            <p id="employer">{{form.company}}</p>
          </div>
          <div id="role-container">
            <p>Role (e.g. Actor, Director)</p>
            <p id="role">{{form.role}}</p>
          </div>
          <div class="area-of-filming-container">
            <p>Area Of Production/Filming</p>
            <p id="area-of-filming">{{form.area_of_filming}}</p>
          </div>
          <div id="contact-email-container">
            <p>Contact Email</p>
            <p id="contact-email">{{form.contact_email}}</p>
          </div>
          <div id="description-container">
            <p>Description Of Job</p>
            <p id="description">{{form.description}}</p>
          </div>
          <button type="submit" id="post-job">Publish Job</button>
        </form>
      </div>
    </div>

    <script
      src="{% static 'lng/js/manage-jobs.js' %} "
      type="text/javascript"
    ></script>
  </body>

manage-jobs.js

var modal = document.getElementById("myModal");
var btn = document.getElementById("myBtn");
var span = document.getElementsByClassName("close")[0];
btn.onclick = function() {
  modal.style.display = "block";
}

span.onclick = function() {
  modal.style.display = "none";
}

window.onclick = function(event) {
  if (event.target == modal) {
    modal.style.display = "none";
  }
}

Надеюсь, я дал вам достаточно информации + код, чтобы ответить на мой вопрос. Извините за запутанную формулировку заголовка, мне было трудно составить это предложение вместе.

Самый простой способ - использовать ListView из django.views.generic.list.ListView

Вернуться на верх