Обновление отношений "один-к-одному" в 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)