Как построить django queryset, чтобы показать все связанные объекты, сгруппированные и отображаемые в шаблоне рендеринга
Достичь: Введите данные в шаблон, как показано ниже:
PLan 1: ABC
- General Objective 1
- Sub-Objective-1
- Task 1
- Task 2
- Sub-Objective-2
- Task 1
PLan 2: ZZZ
- General Objetivo General 1
- Sub-Objetivo-1
- Tarea 1
PLan 3: DDD
- General Objetivo General 1
- Sub-Objetivo-1
- Tarea 1
- Sub-Objetivo-2
- Tarea 1
Это означает, что: План может иметь много общих целей, и эта общая цель может иметь несколько подцелей, и каждая из целей может иметь одну или несколько задач.
Мои фактические модели и все отношения:
class ActionPlan(models.Model):
description = models.CharField ( max_length=250, null=False, default='' )
class PlanObjective(models.Model):
actionplan = models.ForeignKey ( ActionPlan, on_delete=models.CASCADE )
description = models.TextField ( max_length=1750, null=False, default='')
class PlanSubObjective ( models.Model ) :
actionplan = models.ForeignKey ( ActionPlan, on_delete=models.CASCADE )
planobjective = models.ForeignKey ( PlanObjective, on_delete=models.CASCADE )
description = models.TextField ( max_length=1750, null=False, default='' )
class PlanSubObjectiveTask ( models.Model ) :
actionplan = models.ForeignKey ( ActionPlan, on_delete=models.CASCADE )
planobjective = models.ForeignKey ( PlanObjective, on_delete=models.CASCADE )
plansubobjective = models.ForeignKey ( PlanSubObjective, on_delete=models.CASCADE )
description = models.TextField ( max_length=1750, null=False, default='' )
Вот мой фактический запрос:
plans = PlanSubObjectiveTask.objects.filter(period=period).select_related(
'plansubobjective', 'planobjective', 'actionplan')
Я читал следующую документацию: https://docs.djangoproject.com/en/4.0/ref/templates/builtins/#regroup, но результаты не соответствуют ожидаемым.
Если вы считаете, что существует лучший способ построения кверисета - добро пожаловать.
Мне очень нужна помощь для выполнения этого задания. Заранее спасибо.