Вы можете получить список местоположений без 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 %}
Некоторые платформы как Symfony, CakePHP, Akelos, CodeIgniter и другие имеют поддержку лесов.
Однако, если Вы не хотите использовать платформу, можно попробовать phpScaffold, который генерирует страницы лесов CRUD на основе phpMyAdmin экспорта таблицы...
QCodo является другой большой опцией. И так как это использует отражение, чтобы сделать Генерацию кода вместо отражения во времени выполнения, Вы будете, вероятно, видеть лучшую производительность.
Во-первых, направляющие платформа. PHP является языком. PHP не имеет встроенной поддержки лесов, так же, как Ruby - направляющие языка, основываются - не делает. Платформа как CakePHP, однако, действительно поддерживает леса.
Во-вторых, я вижу, что Вы выдвинули возражение к CakePHP, потому что "все еще необходимо сделать набор материала". Это правда - с любой платформой, Вы оказываетесь перед необходимостью изучать новые конвенции, конфигурации и т.д.
Если Вы используете CakePHP в качестве веб-платформы, это поддерживает scafalding. См. эту ссылку для большего количества информации http://book.cakephp.org/2.0/en/controllers/scaffolding.html
Для myslef я использую CodeIniter для разработки, убедитесь, что у них есть строительные леса, но только в терминах «простых строительных лесов», что означает, что вы не собираетесь использовать их в живом продукте (я не знаю обо всех, но я использую их только как некоторые инструменты).
но если вам нужны такие, как Генератор CRUD, вы можете использовать SparkPlug или Ignition , оба они могут использоваться на Codeigniter