簡體   English   中英

如何使用Django模板以及從ManyToMany字段獲取家譜?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM