Получение количества объектов в наборе, связанном с моделью Django (вложенный) - PullRequest
0 голосов
/ 30 октября 2019

У меня есть три модели, каждая из которых имеет отношение 1: n с другой, поэтому, исходя из одной модели, я хотел бы знать общее количество всех дочерних объектов.

У меня уже есть рабочаякод (показан ниже) в функции, но я считаю, что это может быть сделано в одном запросе.

class Carton(models.Model):
    id = models.CharField(max_length=15, primary_key=True)
    pallet = models.ForeignKey(Pallet, null=True, blank=True, on_delete=models.SET_NULL)
    # removed the other unrelated fields

class Pallet(models.Model):
    id = models.CharField(max_length=15, primary_key=True)
    group = models.ForeignKey(PalletGroup, on_delete=models.CASCADE)
    # removed the other unrelated fields

class PalletGroup(models.Model):
    id = models.UUIDField(default=uuid.uuid4, primary_key=True)
    # removed the other unrelated fields

    # THIS IS WHAT I THINK COULD BE DONE IN A SINGLE QUERY
    def total_assigned_cartons(self):
        total_assigned_cartons = 0
        for pallet in self.pallet_set.all():
            total_assigned_cartons += pallet.carton_set.count()
        return total_assigned_cartons

Я просто пытаюсь понять, если это можно сделать в одном запросе, а не итерации по всемсвязанные объекты и подсчет общего количества для каждого.

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