Как заполнить поле модели сигналом Django после обновления другого поля модели?

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

Models.py

class Task(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)

Вы можете использовать сигнал pre_save для сравнения старого значения поля с новым, примерно так:

@receiver(pre_save, sender=Task)
def assign_task(sender, instance, **kwargs):
    
    # get the task before the new value is saved:
    instance_with_old_value = Task.objects.get(id=instance.id)
    old_start_date = instance_with_old_value.start_date

    # get the task after the new value is saved:
    instance_with_new_value = instance
    new_start_date = instance_with_new_value.start_date

    # do something with dates, assign agent:
    ...
Вернуться на верх