Python 在Django中迭代特定组中的项

Python 在Django中迭代特定组中的项,python,django,django-templates,iteration,Python,Django,Django Templates,Iteration,在Django模板中,我希望能够遍历组和项目,但我希望遍历组下的项目。到目前为止,我已经让它们像这样迭代,但它没有显示这些项属于哪个组。如何迭代模板以获得此包含 观点: def manage(request): group_list = Group.objects.order_by('name').filter(user=request.user) item_list = Item.objects.order_by('name').filter(user=request.user

在Django模板中,我希望能够遍历组和项目,但我希望遍历组下的项目。到目前为止,我已经让它们像这样迭代,但它没有显示这些项属于哪个组。如何迭代模板以获得此包含

观点:

def manage(request):
    group_list = Group.objects.order_by('name').filter(user=request.user)
    item_list = Item.objects.order_by('name').filter(user=request.user)
    return render(request, 'manage.html', {'group_list': group_list, 'item_list': item_list})
模板:

{% extends "base.html" %}

{% block content %}

{% for group in group_list %}
    {{ group.name }}<br />
{% endfor %}

{% for item in item_list %}
    {{ item.name }}<br />
{% endfor %}

{% endblock %}

我猜你有一个从项目到组的fk

class Item(models.Model):
    group = models.ForeignKey(Group)
观点:

def manage(request):
    group_list = Group.objects.order_by('name').filter(user=request.user)
    return render(request, 'manage.html', {'group_list': group_list})
模板:

{% extends "base.html" %}

{% block content %}

{% for group in group_list %}
    {{ group.name }}<br />

    <p>Item for this group</p>
    {% for item in group.item_set.all %}
        {{item.name}}
    {% endfor %}
{% endfor %}
{%extends“base.html”%}
{%block content%}
{组中的组的%u列表%}
{{group.name}}
此组的项目

{group.item_set.all%}中的项的% {{item.name} {%endfor%} {%endfor%}

{%endblock%}

您的方法不需要额外的数据库命中。出于性能原因,您应仅选择具有以下相关组的项目:

def manage(request):
  item_list = Item.objects.order_by(
                'group__name', 'name').filter(
                user=request.user).select_related('group')
  return render(request, 'manage.html', {'item_list': item_list})
{% extends "base.html" %}
{% block content %}
{% for item in item_list %}
  {% ifchanged item.group.name %}
    {{ item.group.name }}<br />
  {% endifchanged %}
  {{ item.name }}<br />
{% endfor %}
{% endblock %}
模板如下所示:

def manage(request):
  item_list = Item.objects.order_by(
                'group__name', 'name').filter(
                user=request.user).select_related('group')
  return render(request, 'manage.html', {'item_list': item_list})
{% extends "base.html" %}
{% block content %}
{% for item in item_list %}
  {% ifchanged item.group.name %}
    {{ item.group.name }}<br />
  {% endifchanged %}
  {{ item.name }}<br />
{% endfor %}
{% endblock %}
{%extends“base.html”%}
{%block content%}
{项列表%中的项的百分比}
{%ifchanged item.group.name%}
{{item.group.name}}
{%endifchanged%} {{item.name}}
{%endfor%} {%endblock%}

这样,无论有多少组,您只需点击一次数据库。

哪些是
对象?组和项是如何关联的?