Install the django-autocomplete-light>=2.0.0pre package with pip

Install the stable release, preferably in a virtualenv:

pip install django-autocomplete-light

Or the development version:

pip install -e git+https://github.com/yourlabs/django-autocomplete-light.git#egg=autocomplete_light

Append 'autocomplete_light' to settings.INSTALLED_APPS before django.contrib.admin

Enable templates and static files by adding autocomplete_light to settings.INSTALLED_APPS which is editable in settings.py. For example:

INSTALLED_APPS = [
    # [...] your list of app packages is here, add this:
    'autocomplete_light',
]

Django < 1.7 support: call autocomplete_light.autodiscover() before admin.autodiscover()

In urls.py, call autocomplete_light.autodiscover() before admin.autodiscover() and before any import of a form with autocompletes. It might look like this:

import autocomplete_light.shortcuts as al
# import every app/autocomplete_light_registry.py
al.autodiscover()

import admin
admin.autodiscover()

Also, if you have yourapp.views which imports a form that has autocomplete, say SomeForm, this will work:

import autocomplete_light.shortcuts as al
al.autodiscover()

from yourapp.views import SomeCreateView

But this won’t:

from yourapp.views import SomeCreateView

import autocomplete_light.shortcuts as al
al.autodiscover()

That is because auto-discovery of autocomplete classes should happen before definition of forms using autocompletes.

Include autocomplete_light.urls

Install the autocomplete view and staff debug view in urls.py using the include function. Example:

# Django 1.4 onwards:
from django.conf.urls import patterns, url, include

# Django < 1.4:
# from django.conf.urls.default import patterns, url, include

urlpatterns = patterns('',
    # [...] your url patterns are here
    url(r'^autocomplete/', include('autocomplete_light.urls')),
)

Ensure you understand django.contrib.staticfiles

If you’re just trying this out using the Django runserver, that will take care of staticfiles for you - but for production, you’ll need to understand django-staticfiles to get everything working properly. If you don’t, here’s a good article about staticfiles or refer to the official Django howto and Django topic.

Include autocomplete_light/static.html after loading jquery.js (>=1.7)

Load the javascript scripts after loading jquery.js, for example by doing:

{% load static %}
<script src="{% static 'admin/js/vendor/jquery/jquery.min.js' %}" type="text/javascript"></script>
{% include 'autocomplete_light/static.html' %}

Optionally include it in admin/base_site.html too

For admin support, override admin/base_site.html. For example:

{% extends "admin/base.html" %}
{% load static %}

{% block extrahead %}
    {{ block.super }}
    <script src="{% static 'admin/js/vendor/jquery/jquery.min.js' %}" type="text/javascript"></script>
    {% include 'autocomplete_light/static.html' %}
{% endblock %}

Note

There is nothing magic in how the javascript loads. This means that you can use django-compressor or anything.