2011-11-15 178 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