Skip to main content

Ajax autocomplete list filter for Django admin

Project description

django-admin-autocomplete-list-filter

Ajax autocomplete list filter helper for Django admin. Uses Django’s built-in autocomplete widget! No extra package or install required!

After

Installation and Usage

$ pip install django-admin-autocomplete-list-filter2

Add djaa_list_filter2 to INSTALLED_APPS in your settings.py:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'djaa_list_filter2',           
]

Now, let’s look at this example model:

# models.py

from django.conf import settings
from django.db import models


class Post(models.Model):
    category = models.ForeignKey(to='Category', on_delete=models.CASCADE, related_name='posts')
    author = models.ForeignKey(to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE, related_name='posts')
    title = models.CharField(max_length=255)
    body = models.TextField()
    tags = models.ManyToManyField(to='Tag', blank=True)

    def __str__(self):
        return self.title


class Category(models.Model):
    title = models.CharField(max_length=255)

    def __str__(self):
        return self.title


class Tag(models.Model):
    name = models.CharField(max_length=255)

    def __str__(self):
        return self.name

We have 2 ForeignKey fields and one ManyToManyField to enable autocomplete list filter feature on admin. All you need is to inherit from AjaxAutocompleteListFilterModelAdmin which inherits from Django’s admin.ModelAdmin.

Now we have an extra ModelAdmin method: autocomplete_list_filter. Uses Django Admin’s search_fields logic. You need to enable search_fields in the related ModelAdmin. To enable completion on Category relation, CategoryAdmin should have search_fields that’s it!

from django.contrib import admin

from djaa_list_filter2.admin import (
    AjaxAutocompleteListFilterModelAdmin,
)

from .models import Category, Post, Tag


@admin.register(Post)
class PostAdmin(AjaxAutocompleteListFilterModelAdmin):
    list_display = ('__str__', 'author', 'show_tags')
    autocomplete_list_filter = ('category', 'author', 'tags')

    def show_tags(self, obj):
        return ' , '.join(obj.tags.values_list('name', flat=True))


@admin.register(Category)
class CategoryAdmin(admin.ModelAdmin):
    search_fields = ['title']
    ordering = ['title']


@admin.register(Tag)
class TagAdmin(admin.ModelAdmin):
    search_fields = ['name']
    ordering = ['name']

Development

You are very welcome to contribute, fix bugs or improve this project. We hope to help people who needs this feature. We made this package for our company project. Good appetite for all the Django developers out there!

License

This project is licensed under MIT


Contributor(s)


TODO

  • Add unit tests
  • Improve JavaScript code :)

Change Log

2025-06-14

  • Bump version: 1.0.3
  • Renamed to djaa_list_filter2 to avoid conflicts with other versions

2022-07-29

  • Bump version: 1.0.2
  • Fixed Django 4 compatibility by removing usage of ugettext_lazy

2021-09-03

  • Bump version: 1.0.1
  • Fixed css conflict with Django theme

2021-08-17

2019-10-25

  • Remove f-string for older Python versions, will change this on 1.0.0 version

2019-10-19

  • Bump version: 0.1.2
  • Add Python 3.5 supports, thanks to Peter Farrel
  • Add animated gif :)
  • Add future warning for f-strings

2019-10-11

  • Add ManyToManyField support
  • Initial release

2019-10-07

  • Init repo...

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

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file django_admin_autocomplete_list_filter2-1.0.2.tar.gz.

File metadata

File hashes

Hashes for django_admin_autocomplete_list_filter2-1.0.2.tar.gz
Algorithm Hash digest
SHA256 34fc54ddccef901274058ccce2b17bd1fee3bb989cc5110d2fc3ce6013c51273
MD5 7841e5871bfd03afacc955f8c6345439
BLAKE2b-256 ff3d2cbd87b91199b370df5442977113189b9b8b4ef758110d3ed7982e4fabd1

See more details on using hashes here.

File details

Details for the file django_admin_autocomplete_list_filter2-1.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for django_admin_autocomplete_list_filter2-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1957573d6fa60cd3840a70b10c70a4c51cc64044a842e6d85a5f10b3bcacbb13
MD5 07551ba4cd9a93fb4419f8a1fb429b63
BLAKE2b-256 4a8e12a5cb2a466fe8a9a6bdb2e1c8a64909a3f0118d0bee01a3d2037a3df199

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page