Обновление отношений "один-к-одному" в Django приводит к сбою ограничения UNIQUE

Я не могу понять, почему я получаю ошибку здесь - когда запрос обновления выполняется с этим кодом django ORM save(), я получаю ошибку UNIQUE Constraint Error:

django.db.utils.IntegrityError: UNIQUE constraint failed: tasks_recurringtask.id

.

Насколько я понимаю, обновление выполняется немедленно и вызывается только на том же задании планировщика, которое имеет ID, ссылающийся на данную RecurringTask. Может быть, я что-то упускаю или есть безопасный способ сделать это? Любые объяснения будут полезны, спасибо!

class RecurringTask(models.Model):
    name = models.CharField(max_length=255)
    owner = models.ForeignKey(CustomUser, on_delete=models.CASCADE, related_name='tasks')
    start_time = models.DateTimeField(default=now)
    scheduler_job = models.OneToOneField(
        Schedule,
        on_delete=models.CASCADE,
        blank=True,
        null=True,
        default=None
    )

    def save(self, *args, **kwargs):
        # set all other dependencies for Task
        # update Scheduler Job
        if self.scheduler_job is None:
            self.scheduler_job = Schedule.objects.create(func='tasks.jobs.do_task',
                                                         args=f'{self.pk}',
                                                         next_run=self.start_time
                                                         )
        else:
            Schedule.objects.filter(id=self.scheduler_job_id).update(
                next_run=self.start_time
            )
        super(RecurringTask, self).save(self)
Вернуться на верх