所以这个描述有点奇怪,请容忍我:)试图在没有代码的情况下解释是没有意义的,所以这里有一个简单的例子:
class Employee(models.Model):
name = models.CharField(max_length=100)
class Location(models.Model):
address = models.CharField(max_length=200)
employees = models.ForeignKey(Employee)
class Company(models.Model):
name = models.CharField(max_length=100)
locations = models.ForeignKey(Location)
假设我们想通过模板打印出某个公司的每个员工。通常我们会这样做:
{% for location in company.locations.all %}
{% for employee in location.employees.all %}
{{ employee.name }} <br/>
{% endfor %}
{% endfor %}
这很好,但在本例中,如果有员工,我想在员工列表的顶部打印出一个标题,如果没有员工,则不打印标题。在我使用的典型循环中
forloop.first
指示应该显示标题,但在这种情况下我不能。如果我在外部循环(位置)中尝试,则在没有员工时可能会得到标题;如果我在内部循环(员工)中尝试,则只会得到包含员工的位置的标题,但我将为每个位置获得一个标题,而不是整个列表中的单个标题。
现在,我的理想解决方案是一起跳过一步,并有某种方法在公司层面上遍历所有员工:
{% for employee in company.employees %}...{% endfor %}
在哪里?
employees
在公司级别,基本上是每个位置的雇员查询集的串联。我已经调查过定制经理,但我不确定如何在这种情况下利用他们。
希望这有点道理。谢谢你的建议!