Джанго Хотите посчитать разные типы предметов - PullRequest
0 голосов
/ 23 мая 2011

Ранее у меня был сводный список клиентов в таблице. В одном столбце у меня был список типов объектов, а в другом - количество типов этого объекта.

@login_required
def client_summary(request, client_id):
    client = models.Client.objects.get(pk = client_id)
    items = client.storageitem_set.all()
    tape_and_film_items = client.storageitem_set.filter(type="1")
    total_tape_and_film_items = tape_and_film_items.count()
    electrical_equipment_items = client.storageitem_set.filter(type="2")
    total_electrical_equipment_items = electrical_equipment_items.count()
    storage_office_equipment_items = client.storageitem_set.filter(type="3")
    total_storage_office_equipment_items = storage_office_equipment_items.count()


<table cellspacing="15" style="float: left">
<tr><th scope="col">Type</th><th scope="col">Quantity</th></tr>
</tr><td>Tape + Film</td><td align="center">{{total_tape_and_film_items}}</td></tr>
</tr><td>Electrical Equipment</td><td align="center">{{total_electrical_equipment_items}}</td></tr>
</tr><td>Storage Office Equipment</td><td align="center">{{total_storage_office_equipment_items}}</td></tr>
</table>

Теперь это будет работать, но есть проблема. Ранее я не знал, что пользователи могут добавлять свои собственные объекты хранения из формы в мое веб-приложение. Если они попытаются добавить новый тип объекта, он не будет отображаться в моем резюме клиента, пока я не напишу явно запрос django в представлении, передающем переменную в шаблоне. Если бы не было формы для добавления типа объекта, это сработало бы.

Так что в моем шаблоне теперь у меня есть это в столбце типа. Эта часть будет работать, потому что все, что мне действительно нужно сделать, это перечислить все объекты элемента хранения независимо от того, кем он является.

views.py

item_type = models.StorageObject.objects.all()

шаблон

 {% for item in item_type %}
     {{item.title}}
 {% endfor %}

Но в столбце количества я не могу сосчитать. Ничего не возвращает.

{% for item in items %}
    {{item.type.count}}
{% endfor %}

1 Ответ

1 голос
/ 23 мая 2011

Если вам нужно отобразить некоторую информацию об элементах для каждого тега, вы можете использовать тег regroup . Если вы хотите только количество, используйте Count функцию агрегирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...