@NikClik

Запрет на редактирование поля, вычисление данного поля, как?

У меня есть 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, но не знаю каких, подскажите каких пожалуйста
  • Вопрос задан
  • 209 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы