2011-09-21 40 views
2

我正在尝试使用Django 1.3进行颠倒的SQL查找。我发现了很多相关的问题,但不幸的是,我只能在一条记录上找到答案,而不是一次记录多条记录。如何为Django中的所有记录执行反向外键查找?

基本上,这是我的情况:我有一个模型“技术”,看起来像这样:

class Technique(models.Model): 
    title = models.CharField(max_length=32) 
    description = models.CharField(max_length=256) 
    skill_level = models.IntegerField() 
    parent_technique = models.ForeignKey('self', blank=True, null=True) 

此刻,我只是让所有的父母双亡的技术清单。

t = get_list_or_404(Technique.objects.filter(parent_technique=None)) 

现在我想要的(或至少觉得我想要的)是,在t所有条目得到一个添加现场“孩子的”列出所有列出当前的技术,因为他们的父母的技术。谁能帮我这个?

此外,如果他们是另一种方式来实现我想要的,请随时为它做出贡献。我刚开始使用Django,所以我可能不知道任何替代方法。

非常感谢!

模型

回答

4

添加related_name

parent_technique = models.ForeignKey('self', blank=True, null=True, related_name="childrens_tech") 

smt_technique的所有子技术

smt_technique.childrens_tech.all() 
+1

这样做。非常感谢! :) – lunanoko

8

这是内置的已经 - 见following relations backwards

在你的情况,只是做:

obj.technique_set.all() 

t每个obj

+0

“_set”是关键。主要的事情要注意:) – akki