Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Django autocomplete does not work

I'm using django-autocomplete-light 3.2.1 in django 1.10.2. In admin instead of autocomplete field I see a select field. I followed the instructions from here.

package urls.py

urlpatterns = i18n_patterns(
url(r'^admin/', admin.site.urls),
url(r'^autocomplete/', include('apps.vehicle.urls')),)

Inside apps folder I have a vehicle app. Inside I have following codes. 1) views.py:

  from dal import autocomplete
  from .models import Model

  class ModelAutocomplete(autocomplete.Select2QuerySetView):
      def get_queryset(self):
    # Don't forget to filter out results depending on the visitor !
          if not self.request.user.is_authenticated():
               return Model.objects.none()

    qs = Model.objects.all()

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

    return qs

2) forms.py:

from django import forms

from dal import autocomplete
from .models import Model, ChassisCode

class ChassisCodeForm(forms.ModelForm):
   test_field = forms.ModelChoiceField(
        queryset=Model.objects.all(),
        widget=autocomplete.ModelSelect2(url='model-autocomplete')
    )

class Meta:
    model = ChassisCode
    fields = ('__all__')

3) admin.py:

class ChassisCodeAdmin(admin.ModelAdmin):
    form = ChassisCodeForm

admin.site.register(ChassisCode, ChassisCodeAdmin)

4) finally urls.py:

from django.conf.urls import url

from .views import ModelAutocomplete

urlpatterns = [
    url(
        r'^model-autocomplete/$',
        ModelAutocomplete.as_view(),
        name='model-autocomplete',
    ),
]

But, autocomplete does not work. In admin I see only common admin select field. What may be wrong in my codes?

like image 272
Alex Sh. Avatar asked Sep 19 '26 13:09

Alex Sh.


1 Answers

First, I checked Firefox console and found few errors which mean that either there are some code errors or static files are not loaded. After that I checked static folder in my server and discovered that autocomplete folder was not there. Then, just run the following code to solve the issue.

python manage.py collectstatic
like image 100
Alex Sh. Avatar answered Sep 22 '26 13:09

Alex Sh.



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!