Skip to main content

django-searchable-select - a better and faster multiple selection widget with suggestions for Django

Project description

django-searchable-select

A better and faster multiple selection widget with suggestions for Django

What is this?

This plugin provides a replacement for standard multi-choice select on Django admin pages.

You can use this as custom widget for ManyToManyField.

Features

  • Filtering is performed on server side and thus significantly improves performance.

  • Uses Twitter Typeahead to provide suggestion completion.

  • Works great with ManyToMany fields that can be chosen from thousands of thousands of choices, e. g. User - City relations.

Before

Before

Before

After

Before

Before

Installation

  1. Install django-searchable-select.

    $ pip install django-searchable-select
  2. Add ‘searchableselect’ to your settings.

    # settings.py
    
    INSTALLED_APPS = (
        # ...
        'searchableselect',
        # ...
    )
  3. Add URL pattern required for the suggesting engine to your root urls.py.

    # urls.py
    
    urlpatterns = patterns(
        '',
        # ...
        url('^searchableselect/', include('searchableselect.urls')),
        # ...
    )
  4. Use the widget in your model admin class:

    from django import models, forms
    from models import MyModel
    
    class MyModelForm(forms.ModelForm):
        class Meta:
            model = models.MyModel
            exclude = ()
            widgets = {
                'cities': SearchableSelect(model='cities.City', search_field='name')
            }
    
    
    class MyModelAdmin(admin.ModelAdmin):
        form = Form
    
    admin.site.register(models.MyModel, MyModelAdmin)

    Remember to always initialize SearchableSelect with three keyword arguments: model, search_field and many.

    • model is the string in form APP_NAME.MODEL_NAME representing your model in the project, e. g. ‘cities.City’

    • search_field is the field within model that will be used to perform filtering, e. g. ‘name’

    • many must be True for ManyToManyField and False for ForeignKey.

Known issues

  • Not tested with empty fields.

Contributing

I’m looking forward to bug reports and any kind of contribution.

License

You are free to use this where you want as long as you keep the author reference. Please see LICENSE for more info.

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-searchable-select-1.2.tar.gz (26.3 kB view details)

Uploaded Source

File details

Details for the file django-searchable-select-1.2.tar.gz.

File metadata

File hashes

Hashes for django-searchable-select-1.2.tar.gz
Algorithm Hash digest
SHA256 5cc8c2c39deb47edf86f5f92934d7e0bebe84e7982e8669447710ac5e371bf8e
MD5 d2b51268ba0edb9ed2218e3ec607c690
BLAKE2b-256 ce5c9bcdec16ae92f979fac2c2773135e5735633c76d46d7de1c758890c3bc14

See more details on using hashes here.

Supported by

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