Django django-autocomplete-light поиск не завершен

Я использую плагин django-autocomplete-light в своем проекте. Плагин работает просто отлично, но если название компании состоит из более чем одного слова, он не выполняет поиск по второму или третьему слову, например, Bayerische Motoren Werke(BMW), если я ищу Baye... он заполняет поиск, но в поисках Мо... или Вера... это не так. Я знаю, что это плагин автозаполнения, но мне интересно, есть ли обходной путь.

views.py

class CompanyAutoComplete(autocomplete.Select2QuerySetView):
    def get_queryset(self):
        qs = Company.objects.all()

        if self.q:
            qs = qs.filter(name__istartswith=self.q) | qs.filter(comNumber__istartswith=self.q)

        return qs

urls.py

urlpatterns += [
    url(
        r'^autocomplete/$',
        views.CompanyAutoComplete.as_view(model=Company),
        name='company-autocomplete',
    ),
]

models.py

class Company(models.Model):
    name = models.CharField(max_length=255) 
    comNumber = models.CharField(max_length=255)
    law = models.CharField(max_length=255)
    country = models.CharField(max_length=255, null=True, blank=True)
    city = models.CharField(max_length=255, null=True, blank=True)
    street = models.CharField(max_length=255, null=True, blank=True)
    house_number = models.CharField(max_length=255, null=True, blank=True)
    email = models.CharField(max_length=255, null=True, blank=True)

    def __str__(self):
        return self.name.encode("utf-8")

    def get_absolute_url(self):
        return reverse('company-detail', args=[str(self.id)])

    def __unicode__(self):
        return '%s' % (self.name,)

1 ответ

Решение
class CompanyAutoComplete(autocomplete.Select2QuerySetView):
    def get_queryset(self):
        qs = Company.objects.all()

        if self.q:
            qs = qs.filter(name__icontains=self.q) | qs.filter(comNumber__icontains=self.q)

        return qs

Попробуй заменить istartswith с icontains

Другие вопросы по тегам