django模板中外键的反向关系

时间:2011-11-15 15:58:44

标签: django

我有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 %}

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

1 个答案:

答案 0 :(得分: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 %}

那是因为你使用的是ForeignKey而不是OneToOneField,我建议你使用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')