那麼,我開始學習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)。如果這不適合你,請更新你的問題。 –