我有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 %}
但请注意获得结果。有什么建议吗?
答案 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')