Django 如何使用外键自身检索对象

Django 如何使用外键自身检索对象,django,django-models,foreign-keys,Django,Django Models,Foreign Keys,我有一个模型类别,它本身有一个FK引用。 如何将数据发送到模板并使其看起来像这样 第一类 列表项 列表项 第2类 列表项 列表项 看起来您正在尝试使递归在模板中工作。这可能有助于: 您可能正在寻找这样的产品: models.py from django.db import models class Category(models.Model): name = models.CharField(max_length=100) parent = models.Foreig

我有一个模型类别,它本身有一个FK引用。 如何将数据发送到模板并使其看起来像这样

  • 第一类
    • 列表项
    • 列表项
  • 第2类
    • 列表项
    • 列表项

看起来您正在尝试使递归在模板中工作。这可能有助于:

您可能正在寻找这样的产品:

models.py

from django.db import models

class Category(models.Model):
    name = models.CharField(max_length=100)
    parent = models.ForeignKey('self', blank=True, null=True, related_name='child')
    def __unicode__(self):
        return self.name
    class Meta:
        verbose_name_plural = 'categories'
        ordering = ['name']
views.py

from myapp.models import Category # Change 'myapp' to your applications name.
from django.shortcuts import render_to_response

def category(request)
    cat_list = Category.objects.select_related().filter(parent=None)
    return render_to_response('template.html', { 'cat_list': cat_list })
template.html

<ul>
{% for cat in cat_list %}
    <li>{{ cat.name }}</li>
    <ul>
    {% for item in cat.child.all %}
        <li>{{ item.name }}</li>
    {% endfor %}
    </ul>
{% endfor %}
</ul>
    {cat_列表%中的cat为%1}
  • {{cat.name}
    • {cat.child.all%中项目的%
    • {{item.name}
    • {%endfor%}
    {%endfor%}