Django自递归模型。如何查询和模板

时间:2016-04-10 18:23:38

标签: django django-models django-templates django-orm

如何设置创建一个可以提供以下结果的集合的查询:

-Parent1
 -Child1
  -Subchild1
  -Subchild2
 -Child2
  -Subchild3
-Parent2
 -Child3
我现在尝试了一段时间,但我没有到达那里。如果问题出在视图或模板中,我甚至都不确定。

型号:

class Parent(models.Model):
name = models.CharField(max_length=255)

def __str__(self):
    return self.name

class Child(models.Model):
    project = models.ForeignKey(Parent, on_delete=models.CASCADE)
    subchild = models.ForeignKey('self', null=True, blank=True, on_delete=models.CASCADE)
    name = models.CharField(max_length=255)

def __str__(self):
    return self.name

基本查询没有给我我想要的结果。只与孩子一起工作。

Views.py:

def template(request):
    parents = Parent.objects.all()
    context = {'parents':parents}
    return render(request, 'myapp/template.html', context)

Template.html:

<ul>
{% for parent in parents %}
  <li>{{ parent.name }}</li>
<ul>
    {% for child in parent.child_set.all %}
    <li>{{ child.name }}</li>
        <ul>
        {% for subchild in child.subchild_set.all %}
        <li>{{ subchild.name }}</li>        
            {% endfor %}
        </ul>
    {% endfor %}
</ul>
{% endfor %}
</ul>

0 个答案:

没有答案