2011-11-15 6 views
2

私は4つのモデル逆の関係

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

私は理解している場合、質問のようなものになります:あなたはForeignKeyの代わりにOneToOneFieldを使用している、と私はあなたがこれを行うことができますビューでrelated_name

を使用することをお勧めているためである

{% 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 %} 

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

私はDanielに同意し、ビュー内の項目を取得し、テンプレート内でこれを実行しない方が良いです。 – diegueus9

+0

どのようにして同じものを表示できますか?私はビューの逆の関係を意味します – Asif

関連する問題