1
那么这个人是有点古怪来形容了,请多多包涵:)尝试无码解释将没有多大意义,所以这里有一个简单的例子:的Django“CONCAT”查询设置
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
在公司层面实质上是一个级联为每个位置设置的员工查询。我研究过自定义管理器,但我不确定如何在这种情况下使用它们。
希望这是有道理的。感谢您的任何建议!
谢谢!在写完这个问题后大约2分钟,这实际上发生在我身上,我刚才一直在向后看我想的问题!另外一个注意事项,在我的例子中,我实际上将它作为一个函数添加到了我的Model类中,这可以让我完全按照上面在模板(`company.employees`)中所述的方式调用它。 – Toji 2010-11-26 17:28:31