[英]How to acces the the django ManyToMany Field in django Template
[英]how to get family tree using Django template and from ManyToMany field?
我需要家譜,我在這里不使用任何圖書館(您可以建議)。 首先,您可以先研究一下我的模型,以便您了解這個想法。
class FamilyMember(models.Model):
familyname = models.ForeignKey(FamilyName)
first_name = models.CharField(max_length=50)
parents = models.ManyToManyField('self', null=True, blank=True, related_name='p', symmetrical=False)
children = models.ManyToManyField('self', null=True, blank=True, related_name='c', symmetrical=False)
我的視圖功能看起來像
def explore_home(request):
old_date = FamilyMember.objects.filter(familyname__name = family_name).aggregate(Min('birth_date'))
member_obj_all = FamilyMember.objects.get(familyname__name = family_name, birth_date=old_date['birth_date__min'])
我正在使用this code
來構建家譜。
在我的Django模板中,我喜歡
<div class="tree">
<ul>
<li>
<a href="#">{{ family_name }}</a>
<ul>
<li>
<a href="#">{{ member_obj_all }}</a>
{% if member_obj_all.children.all %}
<!-- here we go again -->
<ul>
{% for child_obj in member_obj_all.children.all %}
<li>
<a href="">{{ child_obj }}</a>
{% if child_obj.children.all %}
<!-- here we go againg -->
<ul>
{% for grand_child_obj in child_obj.children.all %}
<li>
<a href="">{{ grand_child_obj }}</a>
</li>
{% endfor %}
</ul>
{% endif %}
</li>
{% endfor %}
</ul>
{% endif %}
</li>
</ul>
</li>
</ul>
</div>
好的上面的代碼工作,輸出就像...
但是,如果我有n個孩子,然后又有孩子的孩子,又該如何使流程自動化,該怎么辦? (在模板中?)。 看到我只是有這個主意,如果您有任何主意,請在這里告訴我。
嘗試這樣的事情(未經測試) :
//child.html
<a href="#">{{child}}</a>
{% if child.children.count %}
<ul>
{% for child_obj in child.children.all %}
<li>
{% include 'child.html' with child=child_obj %}
</li>
{% endfor %}
</ul>
{% endif %}
//tree.html
<div class="tree">
<ul>
<li>
<a href="#">{{ family_name }}</a>
<ul>
<li>
<a href="#">{{ member_obj_all }}</a>
{% if member_obj_all.children.count %}
<ul>
{% for child_obj in member_obj_all.children.all %}
<li>
{% include 'child.html' with child=child_obj %}
</li>
{% endfor %}
</ul>
{% endif %}
</li>
</ul>
</li>
</ul>
</div>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.