2016-11-03 11 views
0

Я использую django-autocomplete-light 3.2.1 в django 1.10.2. В admin вместо поля автозаполнения я вижу поле выбора. Я выполнил инструкции от here.Django автозаполнение не работает

пакет urls.py

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

Внутри приложения папку У меня есть приложение автомобиля. Внутри у меня есть следующие коды. 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) наконец, urls.py:

from django.conf.urls import url 

from .views import ModelAutocomplete 

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

Но, автозаполнение не работает. В admin я вижу только общее поле для выбора admin. Что может быть неправильным в моих кодах?

ответ

1

Во-первых, я проверил консоль Firefox и обнаружил несколько ошибок, которые означают, что либо есть некоторые ошибки кода, либо статические файлы не загружаются. После этого я проверил статическую папку на своем сервере и обнаружил, что папки автозаполнения не было. Затем просто запустите следующий код, чтобы решить проблему.

python manage.py collectstatic