У меня есть 2 модели, в первую записываются задачи, во вторую подзадачи данной задачи.
class GroupTasks(models.Model):
TASK_STATUS = {
('В процессе выполенеия', 'В процессе выполенеия'),
('В ожидании выполнения', 'В ожидании выполнения'),
('Выполнение закончено', 'Выполнение закончено'),
}
owner = models.CharField(blank=True, verbose_name="Владелец", max_length=1000000)
header = models.CharField(blank=False, verbose_name="Заголовок задачи", max_length=1000000)
dateOfStart = models.DateTimeField(blank=False, verbose_name="Дата, время начала задачи")
dateOfEnd = models.DateTimeField(blank=True, verbose_name="Дата, время окончания задачи")
progress = models.IntegerField(default=0, verbose_name="Прогресс")
status = models.CharField(choices=TASK_STATUS, verbose_name="Статус", max_length=1000000, default="В ожидании выполнения")
def __str__(self):
return "Групповые задачи %s %s %s %s" % (self.pk, self.dateOfStart, self.dateOfEnd, self.progress)
class Meta:
verbose_name = 'Групповые задачи'
verbose_name_plural = 'Групповые задачи'
<b>class UnderTask(models.Model):</b>
TASK_STATUS = {
('В процессе выполенеия', 'В процессе выполенеия'),
('В ожидании выполнения', 'В ожидании выполнения'),
('Выполнение закончено', 'Выполнение закончено'),
}
headerTask = models.ForeignKey(GroupTasks, on_delete=models.CASCADE)
creator = models.CharField(max_length=1000000, verbose_name="Создатель", blank=True)
excerpt = models.CharField(max_length=1000000, verbose_name="Выполняющий")
actions = models.TextField(blank=False, max_length=1000000, verbose_name="Выполняемые работы")
dateOfStart = models.DateTimeField(blank=False, verbose_name="Дата, время начала задачи")
dateOfEnd = models.DateTimeField(blank=True, verbose_name="Дата, время окончания задачи")
step = models.IntegerField(blank=False, default=0)
status = models.CharField(choices=TASK_STATUS, default="В ожидании выполнения", max_length=1000000, verbose_name="Статус выполнения")
class Meta:
verbose_name = 'Подзадачи'
verbose_name_plural = 'Подзадачи'
Во-первых, мне надо сделать так, чтобы поле progress в GroupTasks никто не мог редактировать, как это сделать?
Во-вторых, как видно в UnderTask есть поле step, которое отвечает за шаг в задаче (т.е если step = 5, то всего от задачи (progress) выполнено 5% из 100%) , как мне сделать так, чтобы когда статус UnderTask меняется на "Выполнение закончено" сложить GroupTasks.progress и UnderTask.step?
Я понимаю, что это делаться как-то с помощью переопределения каких-то методов в admin, но не знаю каких, подскажите каких пожалуйста