Как реализовать выпадающую панель поиска в Django?

Я думаю о том, как реализовать выпадающую панель поиска в моем приложении, это только простейшая форма этого, дано:

models.py

CATEGORY = (
    ('Hard Disk Drive', 'Hard Disk Drive'),
    ('Solid State Drive', 'Solid State Drive'),
    ('Graphics Card', 'Graphics Card'),
    ('Laptop', 'Laptop'),
    ('RAM', 'RAM'),
    ('Charger', 'Charger'),
    ('UPS', 'UPS'),
    ('Mouse', 'Mouse'),
    ('Keyboard', 'Keyboard'),
    ('Motherboard', 'Motherboard'),
    ('Monitor', 'Monitor'),
    ('Power Supply', 'Power Supply'),
    ('Router', 'Router'),
    ('AVR', 'AVR'),
    ('Tablet', 'Tablet'),
    ('System Unit', 'System Unit'),
    ('Audio Devices', 'Audio Devices'),
    ('CPU', 'CPU'),
    ('Others', 'Others'),
)
class Product(models.Model):
    model_name = models.CharField(max_length=100, null=True, blank=True)
    asset_type = models.CharField(max_length=20, choices=CATEGORY, blank=True)

forms.py

class ProductForm(forms.ModelForm):
    class Meta:
        model = Product
        fields = ['model_name', 'asset_type']

views.py

def product(request):
    items = Product.objects.all()
    if request.method == 'POST':
        form = ProductForm(request.POST, request.FILES)
        if form.is_valid():
           form.save()
        else:
           form = ProductForm()

    context = {
        'items': items,
    }
    return render(request, 'products.html', context)

products.html

<div class="container">
    <div class="row my-1">
 
            <h4>Enroll a product:</h4>
            <hr>
    </div>
        
            <form method="POST" enctype="multipart/form-data">
                {% csrf_token %}
                {{ form|crispy }}
                <input class="btn btn-success btn-block" type="submit" value="Add Product">
                <button type="button" class="btn btn-danger btn-block">Close</button>
            </form>
</div>

Мы все знаем, что результатом формы (в HTML) при отображении категорий модели Product(asset_type) является выпадающее поле без строки поиска. Я беспокоюсь, что когда мои категории вырастут, пользователю будет сложнее найти категорию, если только пользователь не сможет искать по тому же полю, где существует выпадающее поле, так что оно будет фильтровать то, что будет показано в выпадающем поле каждый раз, когда он/она набирает текст.

Вы можете рассмотреть возможность использования django-select2, example или непосредственно select2

This is how will be show

Вернуться на верх