Django: Как я могу получить количество элементов, возвращаемых в вызове базы данных? - PullRequest
0 голосов
/ 07 ноября 2011

Мне кажется, это очень простой вопрос, но я не могу найти ответ.

Все, что мне нужно сделать, это определить количество объектов, возвращаемых запросом к базе данных.

Особое обстоятельство таково: у меня есть модель по имени Студент. Эта модель имеет член ManyToManyField с именем courses_current, который относится к таблице моделей курса. Когда я передаю свой экземпляр 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 я могу просто использовать len(student.classes_current.all()), но я не знаю какого-либо способа использования встроенных функций, а у «словарных объектов» нет функций .size(), поэтому я в убыток. Я уверен, что есть очень простое решение (или, по крайней мере, я надеюсь, что оно есть), но я не могу его найти.

Ответы [ 2 ]

1 голос
/ 07 ноября 2011

Если вам нужно перебрать классы, тег for может получить то, что вам нужно.

{% 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

1 голос
/ 07 ноября 2011

{{student.classes_current.all.count}} но имейте в виду, что он не выбирает объекты, поэтому вам нужно будет выполнить отдельный запрос, если вы хотите зациклить их.

...