Django DRF группировка по родителям родителей с отношениями один-к-одному

Я новичок в Django, и переход от SQL к Django DRF/ORM был веселым, но сложным. Я пытаюсь понять, как получить сумму поля класса при группировке по его родителю:

models.py :

class Plan(models.Model):
    plan_id = models.BigAutoField(primary_key=True)
    date = models.DateField()
    quantity = models.DecimalField(
        max_digits=18, decimal_places=0, blank=True, null=True)
    plan_type = models.CharField(max_length=50)
    plan_line = models.ForeignKey('PlanLine', models.CASCADE)


class PlanLine(models.Model):
    plan_line_id = models.BigAutoField(primary_key=True)
    year_period = models.CharField(max_length=50)
    line = models.ForeignKey('Line', models.CASCADE, blank=True, null=True)
    parent_assembly = models.ForeignKey(
        'ParentAssembly', models.CASCADE, blank=True, null=True)


class Line(models.Model):
    line_id = models.BigAutoField(primary_key=True)
    line_name = models.CharField(max_length=50)
    factory = models.ForeignKey(
        'Factory', models.DO_NOTHING, blank=True, null=True)


class Factory(models.Model):
    factory_id = models.BigAutoField(primary_key=True)
    factory_name = models.CharField(max_length=50)

Я пытаюсь получить Sum(Plan.quantity), группировка по Factory.

Я думаю, что мне нужно использовать следующее, но не понимаю, как добраться до Фабрики в этом маноре: Plan.objects.value(**Factory**).annotate(qty=Sum('quantity'))

Это сработало для меня, мне было немного непонятно, что за магия скрывается за переменными __, ведь это так просто и динамично использовать:

Plan.objects.value('plan_line__line__factory').annotate(qty=Sum('quantity')
Вернуться на верх