我想显示1个带有关联子项的父字段,然后再显示子项
我有一个模特
class GrandParent(models.Model):
name= models.CharField(max_length=50)
....
class Parent(models.Model):
parent = models.ForeignKey(GrandParent, on_delete=models.CASCADE)
name= models.CharField(max_length=50)
....
class Child(models.Models):
parent = models.ForeignKey(Parent, on_delete=models.CASCADE)
name= models.CharField(max_length=50)
...
我可以从“父级父对象”渲染对象,但无法在模板中进一步链接“父类”对象和“子类”对象
我在views.py中使用的这种方法
def list(request):
object_list = GrandParent.published.all()
...
return render('app/list.html')
def detail(request, post,):
post = get_object_or_404(GrandParent, slug=post,
status='published')
return render(request, 'app/detail.html',
{'post' : post,
...
})
现在,如何在同一详细信息视图中链接其他类,但使用外键在此处与父类相关联。我正在关注Django文档,但他们仅使用python shell给出了最多2个示例,而我只混淆了一个子类。如何在此结构中实现。或者任何人已经使用这种类型的模型专门开发了任何项目,因此请共享任何回购链接或其他内容,将是很棒的。
#list.html {%扩展了“ _base.html”%}
{% block title %} mysite{% endblock %}
{% block content %}
<h2>Content </h2>
<ul>
{% for post in object_list %}
<a href="{{ post.get_absolute_url }}">
<li>{{ post.name}}</li></a>
{% endfor %}
</ul>
{% endblock %}
#detail.html
{% extends "_base.html" %}
{% block title %} freeStreams {% endblock %}
{% block content %}
<div class="card-body">
<h1 class="card-title">{{ post.title }}</h1>
</div>
{% endblock %}
您可以通过for循环访问所有子视图视图模板中的一个到多个。您的情况下,使用GrandParent
by post.parent_set.all()
。对于Child
通过parent.child_set.all()
。您可以先在终端中尝试检查您是否具有正确的数据库和关系。
将其添加到块中 content
detail.html
{% for parent in post.parent_set.all() %}
<h1 class="card-title">{{ parent.name }}</h1>
{% for child in parent.child_set.all() %}
<h2 class="card-title">{{ child.name }}</h2>
{% endfor %}
{% endfor %}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句