In the end, I went with this:
from grappelli.views.related import AutocompleteLookup class YPAutocompleteLookup(AutocompleteLookup): """ patch grappelli autocomplete to let us control the queryset by creating a autocomplete_queryset function on the model """ def get_queryset(self): if hasattr(self.model, "autocomplete_queryset"): qs = self.model.autocomplete_queryset() else: qs = self.model._default_manager.all() qs = self.get_filtered_queryset(qs) qs = self.get_searched_queryset(qs) return qs.distinct()
It can be set by overriding the corresponding URL:
url(r'^grappelli/lookup/autocomplete/$', YPAutocompleteLookup.as_view(), name="grp_autocomplete_lookup"),
Make sure itβs ahead of Grappelli in your URLs.
source share