2011-11-15 139 views
2

我有4个车型扭转在Django模板外键关系

Class A 
    name 
Class B 
    fk1 = FK(Class A) 
Class C 
    fk = FK(Class B) 
Class D 
    fk = FK(Class C) 

而且在模板我想对所有这些模型使用反向关系

我想这

{% for que in Class A items %} 

{% for item in que.b.c.d_set.all %} 

但注意获得结果。有什么建议么?

回答

2

如果我理解这个问题将是这样的:

{% for que in a_times %} 
    {% for b_item in que.b_set.all %} 
      {% for c_item in b_item.c_set.all %} 
       {% for d_item in c_item.d_set.all %} 
        # stuff with d_item 
       {% endfor %} 
      {% endfor %} 
    {% endfor %} 
{% endfor %} 

那是因为你正在使用的不是OneToOneField ForeignKey的,我建议你使用related_name

在你能做到这一点的看法:

from app.models import A, D 
from django.shortcuts import render 

def view(request): 
    data = {} 
    a_itemsqs = A.objects.all() # here you filter A objects 
    d_items = D.objects.filter(c__b__a__in=a_itemsqs) 
    data['d_items'] = d_items 
    return render(request, data, 'template.html') 
+5

这是答案,但请记住,您将进行* b * c * d数据库调用(换句话说,很多)。 –

+1

我同意丹尼尔,是更好地得到在视图中的项目,我怎么能代表鉴于同样的事情不要做这个模板中的 – diegueus9

+0

?我的意思是反向关系的看法阿西夫 – Asif