如何构建Django QuerySet,以显示分组的所有相关对象并在渲染模板中显示
实现:将数据显示为例如bellow的模板:
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 PlanObjective(models.Model):
actionplan = models.ForeignKey(ActionPlan, on_delete=models.CASCADE)
center = models.ForeignKey(Center, on_delete=models.CASCADE)
centerobjective = models.ForeignKey(CenterObjective, null=True, on_delete=models.SET_NULL)
description = models.TextField(max_length=250, null=False, default='')
class PlanSubObjective (models.Model):
actionplan = models.ForeignKey(ActionPlan, on_delete=models.CASCADE)
center = models.ForeignKey(Center, on_delete=models.CASCADE)
planobjective = models.ForeignKey(PlanObjective, on_delete=models.CASCADE)
description = models.TextField(max_length=250, null=False, default='')
class PlanSubObjectiveTask (models.Model):
actionplan = models.ForeignKey(ActionPlan, on_delete=models.CASCADE)
center = models.ForeignKey(Center, on_delete=models.CASCADE)
planobjective = models.ForeignKey(PlanObjective, on_delete=models.CASCADE)
plansubobjective = models.ForeignKey(PlanSubObjective, on_delete=models.CASCADE)
is_complete = models.CharField(max_length=2, null=True, blank=True, default='0')
这是我的实际查询:
plans = PlanSubObjectiveTask.objects.filter(period=period).select_related(
'plansubobjective', 'planobjective', 'actionplan')
我正在阅读以下文档: https://docs.djangoproject.com/ /模板/内置/#重组但结果不是预期的。
如果您认为存在的最佳方法是完全欢迎使用QuerySet。
我真的需要帮助来完成此任务。 提前致谢。
Achieve: Show the data into the template as example bellow:
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
This means that: A plan can have many general objectives and this general objective can have several sub-objectives and each of its objectives can have one or several tasks.
My actual models and all relations:
class PlanObjective(models.Model):
actionplan = models.ForeignKey(ActionPlan, on_delete=models.CASCADE)
center = models.ForeignKey(Center, on_delete=models.CASCADE)
centerobjective = models.ForeignKey(CenterObjective, null=True, on_delete=models.SET_NULL)
description = models.TextField(max_length=250, null=False, default='')
class PlanSubObjective (models.Model):
actionplan = models.ForeignKey(ActionPlan, on_delete=models.CASCADE)
center = models.ForeignKey(Center, on_delete=models.CASCADE)
planobjective = models.ForeignKey(PlanObjective, on_delete=models.CASCADE)
description = models.TextField(max_length=250, null=False, default='')
class PlanSubObjectiveTask (models.Model):
actionplan = models.ForeignKey(ActionPlan, on_delete=models.CASCADE)
center = models.ForeignKey(Center, on_delete=models.CASCADE)
planobjective = models.ForeignKey(PlanObjective, on_delete=models.CASCADE)
plansubobjective = models.ForeignKey(PlanSubObjective, on_delete=models.CASCADE)
is_complete = models.CharField(max_length=2, null=True, blank=True, default='0')
This is my actual query:
plans = PlanSubObjectiveTask.objects.filter(period=period).select_related(
'plansubobjective', 'planobjective', 'actionplan')
I was reading the following documentation:
https://docs.djangoproject.com/en/4.0/ref/templates/builtins/#regroup but the results are not the expected.
If you considered that exist a best way to build the queryset is complete welcome.
I really need a help to complete this task.
Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论