django中的可折叠(blog)类型菜单

django中的可折叠(blog)类型菜单,django,menu,Django,Menu,我99%确定我没有使用正确的名称,但我正在尝试查找有关如何创建一个外观和行为类似于博客存档菜单的菜单的信息(只有正确的名称才能帮助我找到正确的位置)。具体来说,单击顶级字段然后获取其所有子字段的功能,请参见以下示例: 我的目的是创建这样一个菜单,但使用数据库中的字段,其中一个虚构的条目如下所示: class foo(models.Model): a = models.CharField(max_length=200) b = models.CharField(max_lengt

我99%确定我没有使用正确的名称,但我正在尝试查找有关如何创建一个外观和行为类似于博客存档菜单的菜单的信息(只有正确的名称才能帮助我找到正确的位置)。具体来说,单击顶级字段然后获取其所有子字段的功能,请参见以下示例:

我的目的是创建这样一个菜单,但使用数据库中的字段,其中一个虚构的条目如下所示:

class foo(models.Model):
    a = models.CharField(max_length=200)
    b = models.CharField(max_length=200)
    c = models.CharField(max_length=200)
菜单将显示
a
的所有唯一值作为顶层(如示例中的年份),单击它将显示所有唯一
b
值(如示例中的月份),单击它将列出所有单独的对应条目


我更喜欢这样一个菜单的正确名称,如果可能的话,还有一些关于如何使用django创建类似概念的文档/指南。

我已经设法使用一些引导和django实现了这一点

该视图是这样生成的,它是一个查询集列表,如下所示(其中
enzyme\u activity\u type=types.values()[0]
是我唯一不喜欢的位:

class IndexView(generic.ListView):
    template_name = 'gts/index.html'
    context_object_name = 'latest_enzyme_list'

    def get_queryset(self):
        try:
            resultList = []
            for types in Enzymes.objects.values('enzyme_activity_type').distinct():                 
                 resultList.append(Enzymes.objects.filter(enzyme_activity_type=types.values()[0]))
            return resultList
        except:
            return Enzymes.objects.none()
使用queryset和bootstrap的html模板(bootstrap和javascript的相关位位于base.html中):

{%extends'base.html%}
{%block body%}
生物工业用糖酶
数据库中所有酶的完整列表:

{%if最新的\u酶\u列表%}
    {最新酶列表%中的酶类型为%} {{酶类型。首先,酶活性类型} {酶u类型%}中的酶为% {%endfor%} {%endfor%}
{%else%} 没有可用的酶

{%endif%} {%endblock%}
摘自base.html(用于说明引导包含):


{%block body%}
{%endblock%}
这将产生下图(第一项“已激活”):


如果我修复它的方式需要以任何方式进行更改以使其成为正确的Django编程,请发表评论。

您需要在
foo
模型中添加
datetime字段
,然后按年份和时间对查询集进行分组month@Tushortz我试图通过文本字符串而不是时间来对它们进行分组(图中显示了我要创建的菜单类型)。例如,
acid
base
作为顶级菜单项。在这种情况下,您将在模型字段中循环,并获得任何字段的唯一性,以表示您要用于分组的文本字符串。`@Tushortz谢谢您,到目前为止,我正在慢慢实现:)
{% extends 'base.html' %}

{% block body %}

<div class="section" id="s-module-django.db.models.fields">
    <h1 class="page-header text-primary">Glycoenzymes for Bioindustries</h1>   
    <div>
        <p>Complete list of all enzymes in the database:</p>
    </div>

    {% if latest_enzyme_list %}
        <ul>
        {% for enzyme_type in latest_enzyme_list %}
            <div class="panel-heading">
                <button type="button" class="btn btn-info" data-toggle="collapse" href="#{{enzyme_type.first.enzyme_activity_type|cut:" "}}">
                    {{enzyme_type.first.enzyme_activity_type}}
                </button>
            </div>
            <div id="{{enzyme_type.first.enzyme_activity_type|cut:" "}}" class="panel-collapse collapse">
            {% for enzyme in enzyme_type %}
                <div><a href="{% url 'gts:detail' enzyme.id %}"><li>{{ enzyme.barcode  }}</li></a></div>
            {% endfor %}
            </div>
        {% endfor %}
        </ul>
    {% else %}
        <p>No enzymes are available.</p>
    {% endif %}
</div>

{% endblock %}
<!DOCTYPE html>
<html lang="en">
<head>
  <link rel="stylesheet" href="{% static 'css/bootstrap.min.css' %}"/>
</head>
<body>
  {% block body %}
  {% endblock %}

<!------- Bootstrap + JQuery JS---------> 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="{% static 'scripts/bootstrap.min.js' %}"></script> 

</body>
</html>