Django - Сложение значений в поле объекта "многие ко многим"?
У меня 2 класса
class Service(models.Model):
service_name = models.CharField(max_length=15, blank=False)
service_time = models.IntegerField(blank=False)
class Appointment(models.Model):
name = models.CharField(max_length=15)
service_selected = models.ManytoManyField(Service, blank=True)
total_time = models.IntegerField(null=True, blank=True)
Я пытаюсь сделать так, чтобы после того, как пользователь выбрал услуги и создал встречу, время обслуживания каждой из услуг было сложено и стало равным общему_времени
Я знаю, что должен использовать что-то вроде
#in class Appointment
def save(self, *args, **kwargs):
self.total_time += self.service_selected.service_time #it needs to add up all of the service_time from each service selected but that's where Im lost
super(Appointment, self).save(*args, **kwargs)
Но я не знаю, как получить значение service_time из каждого из service_name, которые были выбраны, или как запросить каждую service_selected, выбранную в объекте назначения, чтобы я мог сложить эти значения.
Вы можете сделать это следующим образом:
#in class Appointment
def save(self, *args, **kwargs):
self.total_time += Service.objects.all().aggregate(total_time=Sum('service_time'))['total_time']
# You will have to run a query to get the data and aggregate according to that. You may change the query according to your needs.
super(Appointment, self).save(*args, **kwargs)