【发布时间】:2021-04-22 20:38:45
【问题描述】:
我的项目中有以下模型。一个 SRV 包含许多项目,每个项目包含多个任务。我在模板中详细说明每个 SRV,并显示所有相关项目的列表。
class Srv(models.Model):
srv_year = models.CharField(max_length=4)
class Project(models.Model):
srv = models.ForeignKey(Srv, on_delete=models.CASCADE, null=True, blank=True)
class Todo(models.Model):
project = models.ForeignKey(Project, on_delete=models.CASCADE, null=True, blank=True)
state = models.BooleanField(blank=True, null=True, default=False)
在views.py中我想获取与每个项目关联的已完成任务,但我总是从SRV(主模型)获取与所有项目关联的所有任务
class srvdetail(LoginRequiredMixin, DetailView):
model = Srv
template_name = 'srv_detail.html'
slug_field = 'slug'
更新:
在 Project 模型中添加几个定义,并在模板中打印如下:
class Project(models.Model):
#...
def todo_done(self):
return self.todo_set.filter(state=True).count() * 100 / self.todo_set.all().count()
def todo_left(self):
return self.todo_set.filter(state=False).count() * 100 / self.todo_set.all().count()
在我的模板中:
{% for project in srv.project_set.all %}
{{project.todo_done|floatformat:0|intcomma}}% complete
{{project.todo_left|floatformat:0|intcomma}}% left
{% endfor %}
感谢您的 cmets @NKSM
【问题讨论】:
标签: django model nested django-queryset