Форум сайта python.su
0
python=3.7.4
django=1.11.25
mysqlclient=1.4.6
OS=windows
Здравствуйте, только начинаю изучать python и пытаюсь вывести модели оборудования по производителям в выпадающем списке, не могу нормально отфильтровать.
Делаю на django. Хочу сформировать переменную “switches” и чтобы она была равна:
<optgroup label="Eltex"> <option id ="switch-1">2428</option> </optgroup> <optgroup label="Eltex"> <option id ="switch-2">2328</option> </optgroup> <optgroup label="TP-Link"> <option id ="switch-3">T2600</option> </optgroup> <optgroup label="Huawei"> <option id ="switch-4">S5320-28P-LI-AC</option> </optgroup>
vendors = [] models = [] for i in range(1, int(ModelSwitch.objects.filter().count()) + 1): vendor = ModelSwitch.objects.get(id=i).vendor model = ModelSwitch.objects.get(id=i).model i += 1 if vendor not in vendors: vendors.append(vendor) if model not in models: models.append(model) print(vendors) print(models)
['Eltex', 'TP-Link'] ['2428', 'T2600G-28TS-AC', '2000']
Отредактировано vpotd (Дек. 27, 2019 19:12:50)
Офлайн
76
returt render(request, 'example.html', {vendors: ['Eltex', 'TP-Link']})
Офлайн
0
Рендерить я умею. Мне нужен вывод не как у меня уже получился, а как в первом блоке кода. Чтобы я мог эту готовую переменную {{ switches }} воткнуть в html шаблон. Чтобы у меня автоматически обновлялся выпадающий список, в зависимости от количества переменных в таблице с коммутаторами.
Отредактировано vpotd (Дек. 27, 2019 20:31:11)
Офлайн
0
Нужен такой динамический вывод. Допустим я удалил из таблицы хуавей и чтобы моя переменная тоже поменяла своё значение. Чтобы было не 4 записи а 3.
<optgroup label="Eltex"> <option id ="switch-1">2428</option> </optgroup> <optgroup label="Eltex"> <option id ="switch-2">2328</option> </optgroup> <optgroup label="TP-Link"> <option id ="switch-3">T2600</option> </optgroup>
Отредактировано vpotd (Дек. 27, 2019 20:38:08)
Офлайн
0
Я делаю returt render(request, ‘example.html’, {switches: switches})
Вставляю {{ switches }} в html шаблон и у меня там должно появиться то что в прошлом посту
Офлайн
76
сформируй свои данные таким образом
switches = [{vendors: 'Eltex', models: ['2428']}, {vendors: 'TP-Link', models: ['T2600G-28TS-AC', '2000']}]
{% for switch in switches %} {% for model in switch.models %} <optgroup label={{ switch.vendors }}> <option id ="switch-2">{{ model }}</option> </optgroup> {% endfor %} {% endfor %}
Офлайн
0
Romissevd
а в шаблоне так
Отредактировано vpotd (Дек. 27, 2019 21:16:40)
Офлайн
0
Вот что у меня уже есть
switch_gen.html
<select class="custom-select" id="model"> <option selected="1">Выберите модель..</option> {% if switches.count > 0 %} {% for switch in switches %} <optgroup label="{{ switch.vendor }}"> <option id="model-{{ switch.id }}">{{ switch.model }}</option> </optgroup> {% endfor %} {% endif %} </select>
def switch_gen(request): session_key = request.session.session_key if not session_key: request.session.cycle_key() print("Session key: " + request.session.session_key) all_models = ModelSwitch.objects.all() vendors = [] models = [] for i in range(1, int(ModelSwitch.objects.filter().count()) + 1): vendor = ModelSwitch.objects.get(id=i).vendor model = ModelSwitch.objects.get(id=i).model i += 1 if vendor not in vendors: vendors.append(vendor) if model not in models: models.append(model) switches = ModelSwitch.objects.all() return render(request, 'switch_gen.html', {'all_models': all_models, 'switches': switches})
Отредактировано vpotd (Дек. 28, 2019 12:00:56)
Офлайн