Я работаю над поиском критического пути для набора задач. Для этого я добавил в модель задачи логическое поле critical
, для которого по умолчанию установлено значение False
. После запуска этого logi c я хочу обновить это поле как True
для критических задач. Может кто поможет? Кроме того, когда я помечен как критический, я хочу обновить статус (текстовое поле) для всех критических задач в отдельной модели. Вот мои файлы:
models.py:
class Task_category(models.Model):
job = models.ForeignKey(Job,related_name='Job',on_delete=models.CASCADE, null=True)
assigner = models.ForeignKey(User,related_name='assigner', on_delete=models.PROTECT, null=True)
assignee = models.ForeignKey(User,related_name='assignee', on_delete=models.PROTECT, null=True)
unit = models.ForeignKey(Unit,related_name='UnitName',on_delete=models.CASCADE, null=True)
equipment = models.ForeignKey(Equipment,related_name='EquipmentName',on_delete=models.CASCADE, null=True)
name = models.CharField(max_length=200)
share_with = models.ManyToManyField(User)
category = models.CharField(max_length=200, null=True,blank=True)
start_date = models.DateField()
start_time = models.TimeField(null=True,blank=True)
end_date = models.DateField()
end_time = models.TimeField(null=True,blank=True)
created_at = models.DateTimeField(auto_now_add=True,blank=True, null=True)
updated_at = models.DateTimeField(auto_now=True,blank=True, null=True)
status = models.ForeignKey(TaskStatus, related_name='Status',on_delete=models.CASCADE)
predecessor = models.ManyToManyField("self",blank=True)
critical = models.BooleanField(default=False)
status = models.CharField(max_length=400,default='')
def __str__(self):
return(self.name)
views.py:
class GanffView(viewsets.ModelViewSet):
http_method_names = ["get"]
task_list = Task_category.objects.all()
subtask_list = Subtask_category.objects.all()
tasks, critical = cpmlogic(task_list)
cpmlogi c возвращает словарь «задачи», в котором есть ключ isCritical, имеющий значение True для критических задач. Я хочу использовать это для обновления поля critical
в задачах, чтобы его можно было использовать позже в