Vylepšen autocomplete na webu, potřeba otestovat výkon.

This commit is contained in:
Tomas "Jethro" Pokorny 2021-10-11 19:18:35 +02:00
parent 5e2fcd6a0c
commit 4a44ec6b98

View file

@ -5,16 +5,20 @@ from django.db.models import Q
import seminar.models as m import seminar.models as m
from .helpers import LoginRequiredAjaxMixin from .helpers import LoginRequiredAjaxMixin
# TODO filosofie - zkratky, jak v databázi, tak ve vyhledávání (SPŠE, GASOŠ, Kpt., soukr)
class SkolaAutocomplete(autocomplete.Select2QuerySetView): class SkolaAutocomplete(autocomplete.Select2QuerySetView):
def get_queryset(self): def get_queryset(self):
# Don't forget to filter out results depending on the visitor ! # Don't forget to filter out results depending on the visitor !
qs = m.Skola.objects.all() qs = m.Skola.objects.all()
if self.q: if self.q:
qs = qs.filter( words = self.q.split(' ') #TODO re split podle bileho znaku
Q(nazev__istartswith=self.q)| partq = Q()
Q(kratky_nazev__istartswith=self.q)| for w in words: # Hledej po slovech, zahoď čárky a tečky z konců.
Q(ulice__istartswith=self.q)| if w[-1] in (".",","):
Q(mesto__istartswith=self.q)) w = w[:-1]
partq &= (Q(nazev__icontains=w)|Q(kratky_nazev__icontains=w)|Q(ulice__icontains=w)|Q(mesto__icontains=w))
qs = qs.filter(partq)
return qs return qs