Сохранение текущего пользователя в качестве назначенного агента в модели при обновлении модели

У меня есть список заданий, которые создаются администратором. Когда один из агентов запускает задание, обновляя заметки. Я хотел бы сохранить этого агента в модели задания.

Models.py

class Job(models.Model):
  name = models.CharField(max_length=20, blank=True, null=True)
  agent = models.ForeignKey("Agent", on_delete=models.SET_NULL, null=True)
  start_date = models.DateField(null=True, blank=True)
  notes = models.TextField(default=0, null=True, blank=True)

Views.py

class JobUpdateView(LoginRequiredMixin, generic.UpdateView):
  template_name = "jobs/job_update.html"
  queryset = Job.objects.all()
  form_class = JobModelForm

  def get_success_url(self):
    return reverse("leads:lead-list")

  
  def job_update(request, pk):
    job = Job.objects.get(id=pk)
    form = JobModelForm(instance=job)
    if request.method == "POST":

      form = JobModelForm(request.POST, instance=job)

      if form.is_valid():
        form.save()
         
        return redirect("/jobs)
  context = {
      "form": form,
      "job': job
      }
   return render(request, "jobs/job_update.html", context)

Почему вы не сохраняете соответствующий экземпляр агента после вызова form.save() ?

class JobUpdateView(LoginRequiredMixin, generic.UpdateView):
  template_name = "jobs/job_update.html"
  queryset = Job.objects.all()
  form_class = JobModelForm

  def get_success_url(self):
    return reverse("leads:lead-list")

  
  def job_update(request, pk):
    job = Job.objects.get(id=pk)
    form = JobModelForm(instance=job)
    if request.method == "POST":

      form = JobModelForm(request.POST, instance=job)

      if form.is_valid():
        form.save()
        
        # Here
        job.agent = Agent.objects.get(user=request.user)
        job.save()
         
        return redirect("/jobs)
  context = {
      "form": form,
      "job': job
      }
   return render(request, "jobs/job_update.html", context)


Если вы не хотите делать еще один запрос на обновление, то можно сделать пользовательский класс формы. Вы можете переопределить класс формы, разрешить передавать ему экземпляр агента и установить агента на экземпляр задания сразу после вызова метода сохранения.

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