Django autocomplete light filters for django admin
Project description
# dal_admin_filters
Django-autocomplete-light filters for django admin.
## Requirements
This is extention for django-autocomplete-light so you need to install and configure it too.
Here will be minimum setup for example.
Refer to http://django-autocomplete-light.readthedocs.io/ fore details.
## Installation
* Install using pip
```
pip install django-autocomplete-light dal_admin_filters
```
* Update INSTALLED_APPS, you need too put django-autocomplete-light before admin
```python
INSTALLED_APPS = [
'dal',
'dal_select2',
'dal_admin_filters',
#
'django.contrib.admin',
... other stuff there ...
]
```
## Configuration
* Create autocomplete view
* Let our models look like this
```python
class Country(models.Model):
name = models.CharField(max_length=100, unique=True)
def __str__(self):
return self.name
class Person(models.Model):
name = models.CharField(max_length=100, unique=True)
from_country = models.ForeignKey(Country)
def __str__(self):
return self.name
```
* Then autocomplete view for country selection will be similar to next
``` python
from your_countries_app.models import Country
class CountryAutocomplete(autocomplete.Select2QuerySetView):
def get_queryset(self):
# Don't forget to filter out results depending on the visitor !
if not self.request.user.is_authenticated():
return Country.objects.none()
qs = Country.objects.all()
if self.q:
qs = qs.filter(name__istartswith=self.q)
return qs
```
* Register view in urls.py
``` python
from your_countries_app.views import CountryAutocomplete
urlpatterns = [
url(
r'^country-autocomplete/$',
CountryAutocomplete.as_view(),
name='country-autocomplete',
),
url(r'^admin/', admin.site.urls),
]
* Use filter in your admin.py
```python
from django.contrib import admin
from notes.models import Country, Person
from dal_admin_filters import AutocompleteFilter
@admin.register(Country)
class CountryAdmin(admin.ModelAdmin):
pass
class CountryFilter(AutocompleteFilter):
title = 'Country from' # filter's title
parameter_name = 'from_country' # field name - ForeignKey to Country model
autocomplete_url = 'country-autocomplete' # url name of Country autocomplete view
@admin.register(Person)
class PersonAdmin(admin.ModelAdmin):
class Media:
pass
list_filter = [CountryFilter]
```
If setup is done right, you will see the Select2 widget in admin filter in Person's changelist view.
![alt text](https://s3.amazonaws.com/upload.screenshot.co/5601128ed4 "Admin filter with Select2 input")
Django-autocomplete-light filters for django admin.
## Requirements
This is extention for django-autocomplete-light so you need to install and configure it too.
Here will be minimum setup for example.
Refer to http://django-autocomplete-light.readthedocs.io/ fore details.
## Installation
* Install using pip
```
pip install django-autocomplete-light dal_admin_filters
```
* Update INSTALLED_APPS, you need too put django-autocomplete-light before admin
```python
INSTALLED_APPS = [
'dal',
'dal_select2',
'dal_admin_filters',
#
'django.contrib.admin',
... other stuff there ...
]
```
## Configuration
* Create autocomplete view
* Let our models look like this
```python
class Country(models.Model):
name = models.CharField(max_length=100, unique=True)
def __str__(self):
return self.name
class Person(models.Model):
name = models.CharField(max_length=100, unique=True)
from_country = models.ForeignKey(Country)
def __str__(self):
return self.name
```
* Then autocomplete view for country selection will be similar to next
``` python
from your_countries_app.models import Country
class CountryAutocomplete(autocomplete.Select2QuerySetView):
def get_queryset(self):
# Don't forget to filter out results depending on the visitor !
if not self.request.user.is_authenticated():
return Country.objects.none()
qs = Country.objects.all()
if self.q:
qs = qs.filter(name__istartswith=self.q)
return qs
```
* Register view in urls.py
``` python
from your_countries_app.views import CountryAutocomplete
urlpatterns = [
url(
r'^country-autocomplete/$',
CountryAutocomplete.as_view(),
name='country-autocomplete',
),
url(r'^admin/', admin.site.urls),
]
* Use filter in your admin.py
```python
from django.contrib import admin
from notes.models import Country, Person
from dal_admin_filters import AutocompleteFilter
@admin.register(Country)
class CountryAdmin(admin.ModelAdmin):
pass
class CountryFilter(AutocompleteFilter):
title = 'Country from' # filter's title
parameter_name = 'from_country' # field name - ForeignKey to Country model
autocomplete_url = 'country-autocomplete' # url name of Country autocomplete view
@admin.register(Person)
class PersonAdmin(admin.ModelAdmin):
class Media:
pass
list_filter = [CountryFilter]
```
If setup is done right, you will see the Select2 widget in admin filter in Person's changelist view.
![alt text](https://s3.amazonaws.com/upload.screenshot.co/5601128ed4 "Admin filter with Select2 input")
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.