Как создать таблицу для отслеживания периодических обновлений состояния инвентаря и как использовать ее в среде django? - PullRequest
0 голосов
/ 10 марта 2020

У меня есть таблица со списком всех устройств, которые есть в моем инвентаре. Время от времени проводится аудит, и база данных должна обновляться в соответствии с состоянием устройств (например, «Потерян», «Найден» и т. Д. c.). В этом примере я просто называю аудиты «Аудит 1» и «Аудит 2», но их будет намного больше. В прошлом я просто добавлял новое поле в таблицу устройств для каждого аудита, но я стараюсь сделать так, чтобы все можно было полностью сделать через веб-интерфейс. Ниже приведен пример того, как я могу сделать это через mysql. Но в моей новой среде я использую django и не знаю, как это дублировать.

SELECT * FROM inventory_audit; +----+----------------+-----------+-----------+ | id | audit_phase_id | device_id | status_id | +----+----------------+-----------+-----------+ | 1 | 1 | 1 | 2 | | 2 | 1 | 5 | 2 | | 3 | 2 | 2 | 1 | | 4 | 2 | 5 | 1 | +----+----------------+-----------+-----------+

SELECT whole.device_id, l1.a1 AS "Audit 1", l2.a2 AS "Audit 2" FROM (SELECT device_id FROM inventory_audit GROUP BY device_id) КАК ВСЕ ЛЕВОЕ СОЕДИНЕНИЕ (SELECT device_id, status_id КАК a1 ИЗ ИДЕНТИФИКАТОРА_audit, ГДЕ audit_phase_id = 1) КАК l1 ВКЛ. (L1.device_id = whole.device_id) ВСТУПИТЬ ВЛЕВО (ВЫБРАТЬ УСТРОЙСТВО_ID, status_id) КАК a2 ИЗ СРЕДСТВА ИНСТ. BY whole.device_id; +-----------+---------+---------+ | device_id | Audit 1 | Audit 2 | +-----------+---------+---------+ | 1 | 2 | NULL | | 2 | NULL | 1 | | 5 | 2 | 1 | +-----------+---------+---------+ Числа в столбцах Аудит - это status_id. В этом примере текст аудита жестко запрограммирован, но будет взят из таблицы aud_phase

Во-первых, есть ли лучший способ сделать это и как? Я нахожусь на ранней стадии разработки, поэтому я не против перестроить таблицы, если это необходимо. Во-вторых, как написать и использовать второй запрос в среде django?

Заранее спасибо за помощь.

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