Django“concat”查询集

Django“concat”查询集,django,django-queryset,Django,Django Queryset,所以这个描述有点奇怪,请耐心听我说:没有代码的解释没有多大意义,所以这里有一个简单的例子: class Employee(models.Model): name = models.CharField(max_length=100) class Location(models.Model): address = models.CharField(max_length=200) employees = models.ForeignKey(Employee) clas

所以这个描述有点奇怪,请耐心听我说:没有代码的解释没有多大意义,所以这里有一个简单的例子:

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 %}
其中,公司级别的员工基本上是每个位置的员工查询集的串联。我已经研究过定制管理器,但我不确定在这个场景中如何使用它们


希望这有点道理。谢谢你的建议

您只需在视图中以相反的方式进行查询,即可获得公司所有员工的单个查询集:

employees = Employee.objects.filter(location__company=company)

这样做的另一个好处是只需要一次数据库点击,而不是每个位置一次。

您只需在视图中以另一种方式进行查询,即可获得公司所有员工的单个查询集:

employees = Employee.objects.filter(location__company=company)

这样做的另一个好处是只需点击一次数据库,而不是每个位置点击一次。

谢谢!实际上,在写下这个问题大约2分钟后,我突然想到了这一点,我想我只是在回顾这个问题!另外一个注意事项是,在我的例子中,我实际上将其作为一个函数添加到了我的模型类中,这样我就可以完全按照上面在模板company.employees.Thancing中描述的那样调用它了!实际上,在写下这个问题大约2分钟后,我突然想到了这一点,我想我只是在回顾这个问题!另一个注意事项是,在我的例子中,我实际上将其作为一个函数添加到了我的模型类中,这样我就可以完全按照上面在模板company.employees中描述的那样调用它。