условное редактирование в модели django - PullRequest
0 голосов
/ 05 апреля 2020

Я пытаюсь найти способ автоматического обновления значений полей, например, когда пользователь обновляет поля типа Поле, Действие, Состояние и конечное время sh. Также обновляются. Например:

if Type == 'On store': Then
Action == 'Requested' 
Status == 'Pending'
Time_Finished == Today

Модель идет так:

class order(models.Model):
   Time_Registered = models.DateField(blank=False)
   Number = models.CharField(max_length=500)
   Type = models.ForeignKey(Type, on_delete=models.CASCADE) 
   Action = models.CharField(max_length=500, blank=True, null=True, choices=ACTION)
   Status = models.ForeignKey(Status, on_delete=models.CASCADE)
   Time_Finished = models.DateField(blank=False)

class Status(models.Model): class Meta: verbose_name_plural = "Status" 
   ID = models.IntegerField(max_length=250) status = 
   models.CharField(max_length=250)  # and it contain : Three values Pending , Under Process and Delivered

1 Ответ

0 голосов
/ 05 апреля 2020

Вы можете переопределить модель save() метод:

class order(models.Model):
   Time_Registered = models.DateField(blank=False)
   Number = models.CharField(max_length=500)
   Type = models.ForeignKey(Type, on_delete=models.CASCADE) 
   Action = models.CharField(max_length=500, blank=True, null=True, choices=ACTION)
   Status = models.ForeignKey(Status, on_delete=models.CASCADE)
   Time_Finished = models.DateField(blank=False)

   def save(self, *args, **kwargs):
      if self.Type == 'On store':
         self.Action = 'Requested' 
         self.Status = Status.objects.get(status='Pending')
         self.Time_Finished = datetime.utcnow()
      super().save(*args, **kwargs)

Для автоматически установленных дат вы также можете взглянуть на атрибуты auto_now и auto_now_add DateField

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...