Django:如何获取数据库调用中返回的元素数量?

时间:2011-11-07 02:18:07

标签: django django-models django-templates size

在我看来,这似乎是一个非常简单的问题,但我似乎无法找到答案。

我需要做的就是确定数据库查询返回的对象数。

具体情况如下:我有一个名为Student的模型。此模型具有名为courses_current的ManyToManyField成员,该成员与课程模型表相关。当我将Student实例传递给模板时,我希望能够执行以下操作(语法可能不完全正确,但您会得到基本的想法):

<div id="classes">
{% if student.classes_current.all.size == 0 %}
    <h1> HEY! YOU AREN'T TAKING ANY CLASSES! REGISTER NOW!
{% else %}
    Here are your courses:
    <!-- ... -->
{% endif %}
</div>

现在,我很确定X_set.all.size不是真的。在manage.py shell中我可以使用len(student.classes_current.all()),但我不知道使用内置函数的任何方法,而“类字典对象”没有.size()功能,所以我很茫然。我确信这是一个非常简单的解决方案(或者至少我希望有),但我似乎无法找到它。

2 个答案:

答案 0 :(得分:1)

{{ student.classes_current.all.count }}但要注意它不会获取对象,因此如果要循环它们,则需要执行单独的查询。

答案 1 :(得分:1)

如果你需要在类for上进行循环,那么tag可以获得你需要的东西。

{% for cl in student.current_classes.all %}
    {{ cl }}
{% empty %}
    <h1>Hey! ...</h1>
{% endfor %}

文档https://docs.djangoproject.com/en/dev/ref/templates/builtins/?from=olddocs#for-empty