Используя Django, как подсчитать количество свободного места на полках, используя набор запросов?

Это Python3 bytes literal . Этот префикс отсутствует в Python 2.5 и старше (он эквивалентен простой строке 2.x, а простая строка 3.x эквивалентна литералу с префиксом u в 2.x). В Python 2.6+ он эквивалентен простой строке, для совместимости с 3.x .

1
задан Tom Mac 16 January 2019 в 16:36
поделиться

1 ответ

Вы можете получить список местоположений без Box с:

Location.objects.filter(box__isnull=True)

или даже проще:

Location.objects.filter(box=None)

Мы можем получить QuerySet с таким [119 ] s для данной комнаты some_room с:

Location.objects.filter(box=None, loc_room=some_room)

Это приведет к запросу, который выглядит следующим образом:

SELECT location.*
FROM location
LEFT OUTER JOIN box ON location.id = box.Location_id
WHERE box.id IS NULL
AND   location.loc_room = some_room

мы также можем посчитать количество Location с с помощью:

Location.objects.filter(box=None, loc_room=some_room).count()

Если вы хотите получить для комнаты количество пустых мест, мы можем комментировать их, например:

Location.objects.values(
    'loc_room'
).filter(
    box__isnull=True
).annotate(
    nempty=Count('id')
).order_by('loc_room')

Затем мы можем напечатать эти как:

{% for each_space in Room_data %}
<p>"Room": "Room {{ each_space.loc_room }}",</p>
<p>"Empty Spaces": {{ each_space.nempty }},</p>
{% endfor %}
0
ответ дан Willem Van Onsem 16 January 2019 в 16:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: