Your project description goes here
The full documentation is at https://django-admin-fast-search.readthedocs.io.
Install django-admin-fast-search:
pip install django-admin-fast-search
Add it to your INSTALLED_APPS:
INSTALLED_APPS = (
...
'django_admin_fast_search',
...
)
Use it in your Django admin for search fields:
from django_admin_fast_search.admin import FastSearch
class MyModelAdmin(FastSearch, admin.ModelAdmin):
list_display = ['name', 'email']
search_fields_contains = ("address",)
search_fields_exact = ("id", "email")
search_fields_fulltext_index = ("name",)
search_fields = search_fields_fulltext_index + search_fields_exact + search_fields_contains
Use it for list filters with django_filters
from django_filters import BooleanFilter, CharFilter, ModelChoiceFilter, FilterSet
from django_admin_fast_search.admin import FastSearchFilterMixin
class MyModelFilter(FastSearchFilterMixin, FilterSet):
is_verified = BooleanFilter(label="Verified?")
company_name = CharFilter(field_name="company__name", lookup_expr="icontains")
company_pincode = CharFilter(field_name="company__location_pincode", lookup_expr="exact")
company = ModelChoiceFilter()
# OR
company = ModelChoiceFilter(queryset=Company.objects.active())
exclude_industry = CharFilter(field_name="industry", lookup_expr="icontains", label="Exclude Industry", exclude=True)
status = MultipleChoiceFilter(
field_name="status",
lookup_expr="exact",
label="Status",
choices=MyModel.STATUS_CHOICES,
)
created_at = DateFilter(field_name="created_at", lookup_expr="gt", label="Signed up After")
class Meta:
model = MyModel
fields = [
"is_verified",
"company_name",
"company_pincode",
"company",
"exclude_industry",
"status",
"created_at",
]
class MyModelAdmin(FastSearch, admin.ModelAdmin):
list_display = ['name', 'email']
list_filter = ["company_tier", *MyModelFilter.as_admin_filters()]
# or only use class-based filters
list_filter = MyModelFilter.as_admin_filters()
Does the code actually work?
source <YOURVIRTUALENV>/bin/activate (myenv) $ pip install tox (myenv) $ tox
pip install -r requirements_dev.txt invoke -l
Tools used in rendering this package: