简体   繁体   English

Django django-autocomplete-light搜索未完成

[英]Django django-autocomplete-light search not complete

I am using django-autocomplete-light plugin in my project. 我在我的项目中使用django-autocomplete-light插件。 Plugin works just fine, but if the company name is made from more than one word it doesn't search by the second or third word, eg Bayerische Motoren Werke(BMW) if I search for Baye... it fill find it, but searching Mo... or Wer... it won't. 插件可以很好地工作,但是如果公司名称是由多个单词组成的,那么它不会以第二个或第三个单词进行搜索,例如,如果我搜索Baye,则使用Bayerische Motoren Werke(BMW)...它会填充找到它,但是搜索Mo ...或Wer ...不会。 I know it's an autocomplete plugin, but I am wondering if there is a workaround. 我知道这是一个自动完成插件,但是我想知道是否有解决方法。

views.py 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 urls.py

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

models.py 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,)
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

Try to replace istartswith with icontains 试图取代istartswithicontains

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM