Django Остальное частичное обновление - PullRequest
0 голосов
/ 07 августа 2020

Я работаю над поиском критического пути для набора задач. Для этого я добавил в модель задачи логическое поле 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 в задачах, чтобы его можно было использовать позже в

1 Ответ

0 голосов
/ 07 августа 2020

вы можете переопределить метод perform_update для ModelViewSet

def perform_update(self, serializer):
    # some condition
    serializer.save(critical=True)
...