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')