【发布时间】:2011-02-27 20:49:14
【问题描述】:
想象以下模型:
class Parent(Model):
...
class Child(Model)
father = ForeignKey(Parent)
...
有些父母有孩子,有些则没有(他们不是真正意义上的父母,只是一个虚构的名字)。
我想进行以下查询:我想列出所有的父母,如果他们有孩子,把孩子也带给我。这相当于对子表的左外连接,即:
select * from app_parent left join app_child on child_father_id=parent_id
这样,当我在模板中调用 Parent.child_set 时,我不会多次访问数据库。有没有办法做到这一点? 谢谢
【问题讨论】:
-
我决定不应该使用这种方法;真的没有任何支持。似乎最好的方法是从最子级的表中进行选择,然后,如果需要,根据情况在父字段中使用“重新组合”模板标签或 set() 函数。
-
重组方法的一个缺点是它不会得到不存在的父母
标签: django left-join django-queryset django-select-related