jschrewe / django-mongoadmin

Integrates mongodb into django's admin
http://www.schafproductions.com/projects/mongo-admin/
BSD 3-Clause "New" or "Revised" License
112 stars 38 forks source link

Add ability to search in Admin with MongoDB #41

Open mrivar opened 6 years ago

mrivar commented 6 years ago

The variable search_fields enables a search box on the admin change list page. This way you can search within your models on the admin site. (ref: https://docs.djangoproject.com/en/2.1/ref/contrib/admin/#django.contrib.admin.ModelAdmin.search_fields)

Without this change, Django returns an error when adding search_fields to a mongo_admin.DocumentAdmin class. This error is due to the usage of the wrong Q operator, which does not correspond to MongoDB search engine: (Django original code: https://github.com/django/django/blob/master/django/contrib/admin/options.py#L1025 uses django.db.models.Q instead of mongo_engine's mongoengine.queryset.visitor.Q).

This change is just adding lines https://github.com/django/django/blob/master/django/contrib/admin/options.py#L984-L1030 here (get_search_results ModelAdmin method), configuring the right Q operator.