Skip to main content

Tweaks for existing built-in Django's autocomplete feature

Project description


This simple django app enables users to do a few tweaks to Django's built-in autocomplete feature.


pip install django-simple-select2


class Publication(models.Model):
    name = models.CharField(max_length=100)

    def __str__(self):

class Reporter(models.Model):
    full_name = models.CharField(max_length=50)
    email = models.EmailField()

    def __str__(self):
        return self.full_name

class Article(models.Model):
    headline = models.CharField(max_length=100)
    pub_date = models.DateField()
    publications = models.ManyToManyField(Publication)
    reporter = models.ForeignKey(Reporter, on_delete=models.CASCADE)

    def __str__(self):
        return self.headline

from django.contrib import admin
from .models import Article
from simple_select2 import Select2Admin, AutoCompleteSelect2, AutoCompleteSelect2Multiple

class ArticleModelAdmin(Select2Admin, admin.ModelAdmin):
    extra = {
        'publications': AutoCompleteSelect2Multiple(url='select2-publication-list'),
        'reporter': AutoCompleteSelect2(url='select2-reporter-list')
    }, ArticleModelAdmin)

from simple_select2 import AutoCompleteBaseView
from .models import Reporter, Publication

class ReporterView(AutoCompleteBaseView):
    model = Reporter
    search_fields = ('full_name', 'email')

class PublicationView(AutoCompleteBaseView):
    model = Publication
    search_fields = ('name',)
from django.urls import path
from .views import ReporterView, PublicationView

urlpatterns = [
    path('reporter/', ReporterView.as_view(), name='select2-reporter-list'),
    path('publication/', PublicationView.as_view(), name='select2-publication-list'),



Sets the project-wide default theme to be used by Select2 for all widgets inheriting from AutoCompleteSelect2Mixin. Can be overridden per widget using parameter theme.

Supported values are:

  • None (or unset) will use theme "admin-autocomplete". This is the default.
  • "admin-autocomplete" uses the theme of Django Admin.
  • "bootstrap4" uses a bundled copy of Takashi Kanemoto's select2-bootstrap4-theme. Please note that this theme requires that you pull in Bootstrap 4 CSS and JavaScript assets in your templates somewhere yourself.
  • "classic" uses the old classic theme of upstream Select2. Not much different from theme "admin-autocomplete".
  • "default" uses the default upstream theme of Select2.


Sets the project-wide default width to be used by Select2 for all widgets inheriting from AutoCompleteSelect2Mixin. Can be overridden per widget using parameter width.

For supported values, please check the official documentation of parameter width of Select2. By default, django-simple-select2 does not enforce any width on Select2.


You will find a simple demo app here, simple-select2-demo

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-simple-select2-0.2.0.tar.gz (5.3 kB view hashes)

Uploaded source

Built Distribution

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page