Django/ Javascript : Настройка визуального отображения выпадающего меню в форме.ChoiceFiled

У меня есть приложение с формой, которая разбивается на несколько шагов с помощью FormWizard. Некоторые поля являются многовариантными с тысячами вариантов выбора. Я хочу улучшить представление выпадающего меню. Я хотел бы заменить его на своего рода фиксированный список с полосой прокрутки, чтобы несколько данных отображались всегда, и пользователь видел их, не нажимая на выпадающее меню, чтобы показать его.

Однако я не знаю, как это сделать, с помощью Javascript или CSS. Я создаю форму с помощью django и вызываю ее.

Кто-нибудь может мне помочь или показать пример?

forms.py

class ClientForm1(forms.Form):
    client = forms.ChoiceField(label="Client :")
    
    def __init__(self, uuid_contrat, *args, **kwargs) :
        
        super(ClientForm1, self).__init__(*args, **kwargs)
        id_contrat = Entity.objects.all().filter(uuid=uuid_contrat).values_list('id', flat=True)[0]
        client_choices = Toriiclients.objects.filter(idcustomer=id_contrat).order_by('-id').values_list('id', 'prenom')
        self.fields['client'].choices = client_choices

class SaletypeForm2(forms.Form):
    saletype = forms.ChoiceField(label="Client :")
    information =forms.CharField(max_length=1000)
    
    def __init__(self, uuid_contrat, *args, **kwargs) :
        
        super(SaletypeForm2, self).__init__(*args, **kwargs)
        id_contrat = Entity.objects.all().filter(uuid=uuid_contrat).values_list('id', flat=True)[0]
        client_choices = ToriiLstAffairetype.objects.filter(idcustomer=id_contrat).order_by('-id').values_list('short_desc', 'short_desc')
        self.fields['saletype'].choices = client_choices

views.py

from django.shortcuts import render
from .forms import ClientForm1, SaletypeForm2
from formtools.wizard.views import SessionWizardView

class FormWizardView(SessionWizardView):
    template_name = "sales/formwiz.html"
    form_list = [ClientForm1, SaletypeForm2]

    def get_context_data(self, form, **kwargs):

        context = super(FormWizardView, self).get_context_data(form, **kwargs)

        uuid_contrat = self.kwargs['uuid_contrat']
        id_contrat = Entity.objects.all().filter(uuid=uuid_contrat).values_list('id', flat=True)[0]
        context['last_clients_created'] = Toriiclients.objects.filter(idcustomer=id_contrat).order_by('-id')[:10]

        return context

    def done(self, form_list, **kwargs):
        return render(self.request, 'done.html', {
            'form_data': [form.cleaned_data for form in form_list],
        })

    def get_form_kwargs(self, step,) :
    
        uuid_contrat = self.kwargs['uuid_contrat']
        kwargs = super(FormWizardView, self).get_form_kwargs(step)
        kwargs["uuid_contrat"] = uuid_contrat

        return kwargs

html

{% extends "layout.html" %}

{% load crispy_forms_tags %}

{% load i18n %}

{% block head %}
{{ wizard.form.media }}
{% endblock %}

{% block content %}

<p>Step {{ wizard.steps.step1 }} of {{ wizard.steps.count }}</p>

{% if wizard.steps.step1 == 1 %}

{% endif %}

<form action="" method="post">{% csrf_token %}
    <table>
    {{ wizard.management_form }}
    {% if wizard.form.forms %}
        {{ wizard.form.management_form }}
        {% for form in wizard.form.forms %}
            {{ form }}
        {% endfor %}
    {% else %}
        {{ wizard.form }}
    {% endif %}
    </table>
    {% if wizard.steps.prev %}
    <button name="wizard_goto_step" type="submit" value="{{ wizard.steps.first }}">{% trans "first step" %}</button>
    <button name="wizard_goto_step" type="submit" value="{{ wizard.steps.prev }}">{% trans "prev step" %}</button>
    {% endif %}
    <input type="submit" value="{% trans "submit" %}"/>
</form>
Вернуться на верх