那么,我开始学习Django,现在我有问题得到一个QuerySet,允许我填表。Django一对多关系查询
该表显示有关程序员项目的信息。每个项目有n次迭代。
| id |名称|起始|结束|成本|目标|描述|客户|进展|状态|迭代|
在视图中,我可以用一个QuerySet这样拿到第9列(从项目模型):
projects = Project.objects.filter(responsible = request.user.id)
在第10栏我必须展示“迭代”的数量每一个项目,我想这一点:
Proyect.objects.filter(responsible = request.user.id).annotate(Niterations= Iteration.objectsfilter(project_id= request.user.id).count())
很好,这是行不通的,据我所知,与注释的参数将被加入到查询集的每个对象...
IWAS尝试另一种方式是:
projects = Project.objects.filter(responsible = request.user.id)
for proy in projects:
proy.annotate(Iteration.objects.filter(project_id=proy.pk).count())
我不知道到底whay它不工作...有没有更简单的方法?
这是一个有点混乱......
我有两个型号的工作: “项目” 和 “迭代”
型号:项目
from django.db import models
from usuarios.models import User
class Proyect(models.Model):
name = models.CharField(max_length=255)
start = models.DateField()
end = models.DateField(blank=True, null=True)
cost = models.FloatField(blank=True, null=True)
objetive = models.TextField(blank=True, null=True)
description = models.CharField(max_length=255, blank=True, null=True)
client = models.CharField(max_length=255, blank=True,null=True)
progress = models.FloatField(verbose_name=u'percentage of progress', default=0.00, editable=False)
responsible = models.ForeignKey(User, editable=False)
STATUS_CHOICES = (
('A','Atrasado'),
('N','Normal'),
('AP','Alta prioridad'),
)
status = models.CharField(max_length=2, choices=STATUS_CHOICES)
def __unicode__(self):
return self.name
型号:迭代
from django.db import models
from proyectos.models import Project
class Iteration(models.Model):
identifier = models.CharField(max_length=255)
start = models.DateField()
end = models.DateField()
progress = models.FloatField(default=0.0, editable=False)
project = models.ForeignKey(Project)
在此先感谢!
(我翻译这一点,如果很抱歉,我们在翻译的错误)
您的Proyect对象与Iteration具有反向关系。在汇总文档中查看[以下反向关系](https://docs.djangoproject.com/en/1.6/topics/db/aggregation/#following-relationships-backwards)。如果这不适合你,请更新你的问题。 –