What are Lookups?
Lookups define the corresponding ajax views used by the auto-completion fields and widgets. They take in the current request and return the JSON needed by the jQuery auto-complete plugin.
Defining a Lookup
django-selectable uses a registration pattern similar to the Django admin. Lookups should be defined in a lookups.py in your application's module. Once defined you must register in with django-selectable. All lookups must extend from selectable.base.LookupBase which defines the API for every lookup.
from selectable.base import LookupBase from selectable.registry import registry class MyLookup(LookupBase): def get_query(self, request, term): data = ['Foo', 'Bar'] return filter(lambda x: x.startswith(term), data) registry.register(MyLookup)
Lookups Based on Models
Perhaps the most common use case is to define a lookup based on a given Django model. For this you can extend selectable.base.ModelLookup. To extend ModelLookup you should set two class attributes: model and search_field.
The syntax for search_field is the same as the Django field lookup syntax. You may optionally define a third class attribute filters which is a dictionary of filters to be applied to the model queryset. The keys should be a string defining a field lookup and the value should be the value for the field lookup.