Autocomplete Show Multiple Fields

Create App

python manage.py startapp autocompletemulticolumn

settings.py

    'blog',
    'autocompletemulticolumn',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

urls.py (DjangoProject)

from django.contrib import admin
from django.urls import path,include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('blog.urls')),
    path('autocompletemulticolumn/', include('autocompletemulticolumn.urls')),   
]

models.py

from django.db import models

# Create your models here.
class Autocomplete(models.Model):
    name = models.CharField(max_length=50)
    category = models.CharField(max_length=50)
    description = models.CharField(max_length=200)

urls.py appfolder

from django.urls import path
from . import views

urlpatterns = [
    path('', views.home, name='autohome'),
    path('autocomplete/', views.autocomplete, name='autocomplete'),
    
]

admin.py

from django.contrib import admin
from . models import Autocomplete
# Register your models here.
admin.site.register(Autocomplete)

Add Model Item From Admin Panel

views.py

from django.shortcuts import render
from django.http import JsonResponse
from .models import Autocomplete
# Create your views here.
def home(request):
 return render(request,'autocompletemulticolumn/index.html')

def autocomplete(request):
    term = request.GET.get('term')
    results = []
    if term:
        results = list(Autocomplete.objects.filter(name__icontains=term).values('name', 'category', 'description'))
    return JsonResponse(results, safe=False)

Templates

templates/autocompletemulticolumn/index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="https://code.jquery.com/ui/1.13.1/themes/smoothness/jquery-ui.css">

</head>
<body>
    <form>
        <label for="autocomplete">Search:</label>
        <input type="text" id="autocomplete">
    </form>

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.3/jquery.min.js"></script>
    <script src="https://code.jquery.com/ui/1.13.2/jquery-ui.min.js"></script>

    <script>
        $(document).ready(function() {
            $('#autocomplete').autocomplete({
                source: 'autocomplete',
                minLength: 2,
                select: function(event, ui) {
                    $('#autocomplete').val(ui.item.name);
                    console.log(ui.item);
                    return false;

                },
                focus: function(event, ui) {
                    $('#autocomplete').val(ui.item.name);
                    return false;
                }
            }).autocomplete('instance')._renderItem = function(table, item) {
                return $('<tr>')
                    .append('<td>' + item.name + '</td>')
                    .append('<td>' + item.category + '</td>')
                    .append('<td>' + item.description + '</td>')
                    .appendTo(table);
            };
        });
    </script>
</body>
</html>

Last updated