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)