Alex Sh.
Alex Sh.

Reputation: 225

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?

Upvotes: 3

Views: 3407

Answers (2)

Yingbin
Yingbin

Reputation: 91

Making the

list_display = ('balabala','balabala',) 

before the form in your ModelAdmin, this works for me.

Upvotes: 0

Alex Sh.
Alex Sh.

Reputation: 225

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

Upvotes: 1

Related Questions