django模板中外键的反向关系
我有四种型号django模板中外键的反向关系,django,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 %} 但请注意得到的结果。有什么建议吗?如果我理解的话,问题会是这样的: {% for
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 %}
但请注意得到的结果。有什么建议吗?如果我理解的话,问题会是这样的:
{% 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,我建议您使用
在视图中,可以执行以下操作:
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')
这是答案,但请记住,您将进行abc*d数据库调用(换句话说,很多)。我同意Daniel的观点,最好在视图中获取项目,而不要在模板中执行此操作。我可以在视图中表示相同的内容吗?我的意思是viewsHow中的反向关系我可以知道哪些d_项与每个a_项相关。所以我可以像这样使用它:{%a在a_项%}{%d在d_的d_这个_a%}。。。{%endfor%}{%endfor%}我建议你提出一个问题,不要把它当作评论