--- /dev/null
+from django.db.models import Q
+
+from ajax_select import register, LookupChannel
+from .models import Work, Author, QuoteTag, AuthorTag, WorkTag
+
+@register('work')
+class WorkLookup(LookupChannel):
+ model = Work
+
+ def get_query(self, q, request):
+ return self.model.objects.filter(
+ Q(name__icontains=q) | Q(author__name__icontains=q)
+ ).order_by('name')[:10]
+
+ def format_item_display(self, item):
+ return str(item)
+
+@register('author')
+class AuthorLookup(LookupChannel):
+ model = Author
+
+ def get_query(self, q, request):
+ return self.model.objects.filter(
+ name__icontains=q
+ ).order_by('name')[:10]
+
+ def format_item_display(self, item):
+ return str(item)
+
+def taglookup(tagclass):
+ @register(tagclass.__name__)
+ class Lookup(LookupChannel):
+ model = tagclass
+
+ def get_query(self, q, request):
+ return self.model.objects.filter(
+ tag__icontains=q
+ ).order_by('tag')[:10]
+
+ def format_item_display(self, item):
+ return str(item)
+
+taglookup(QuoteTag)
+taglookup(WorkTag)
+taglookup(AuthorTag)