Сохранение текущего пользователя в качестве назначенного агента в модели при обновлении модели
У меня есть список заданий, которые создаются администратором. Когда один из агентов запускает задание, обновляя заметки. Я хотел бы сохранить этого агента в модели задания.
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)
Если вы не хотите делать еще один запрос на обновление, то можно сделать пользовательский класс формы. Вы можете переопределить класс формы, разрешить передавать ему экземпляр агента и установить агента на экземпляр задания сразу после вызова метода сохранения.