有没有办法在查询集中的数据进入模板之前以某种方式预先选择数据?有这个'项目'模型连接到'project_phase',还有'project_phase_history'记录可以跟踪所有状态变化。django:管理要在模板上显示的数据
我正在构建关于这些数据的报告,并在一个页面上显示他们的所有项目,并且只想显示过去几天或最近一次提交的project_phase_history。
我试图在视图中莫名其妙地这样做是这样的:
projects_to_report_on = project.objects.filter(Q(current_phase__phase__id__in=[1,2,3,4]) & Q(role_sponsor__id = sponsor_id))
projects_to_report_on.current_phase.project_phase_history_set = projects_to_report_on.current_phase.project_phase_history.filter(...)
,但是这并不能帮助,真的 - 所有的数据似乎跳进模板。
我结束了传递日期为模板,生成报告是这样的:
{% for s in p.current_phase.project_phase_history_set.all %}
{% if s.date_submitted >= status_start_date %}
<tr>
<td>{{ s.date_submitted }}</td>
<td>{{ s.date_end_fact|default_if_none:"-" }}</td>
</tr>
{% endif %}
{% endfor %}
,但它不没有我要找的灵活性。
class project(models.Model):
name = models.CharField(max_length=100, null=False, unique=True)
description = models.CharField(max_length=1024,null=True,blank=True)
current_phase = models.ForeignKey('project_phase', null=True, blank=True, related_name="current_phase")
class project_phase(models.Model):
phase = models.ForeignKey('phases')
project = models.ForeignKey('project')
is_finished = models.BooleanField(default=False)
class project_phase_history(models.Model):
project_phase = models.ForeignKey('project_phase')
date_start_plan = models.DateField(null=True, blank=False)
date_start_fact = models.DateField(null=True, blank=True)
感谢您的评论。如果我为单个项目生成报告,这将工作。由于我在报告中推送了大量项目并将两个(报告/状态)集合传入到了它中,因此我将能够在模板中将它们彼此绑定:(除非我的错误 – abolotnov 2012-03-14 20:26:53
我'我已经编辑了我的答案,包括一个无害的方式来做到这一点。 – roam 2012-03-14 20:41:22
这应该解决,谢谢! – abolotnov 2012-03-14 20:51:04