Django 自动完成不起作用
Django autocomplete does not work
我在 django 1.10.2 中使用 django-autocomplete-light 3.2.1。在管理员而不是自动完成字段中,我看到了一个 select 字段。我按照 here.
的说明进行操作
套餐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',
),
]
但是,自动完成不起作用。在管理员中,我只看到普通管理员 select 字段。我的代码可能有什么问题?
首先,我检查了 Firefox 控制台并发现了一些错误,这意味着有一些代码错误或未加载静态文件。之后我检查了服务器中的静态文件夹,发现自动完成文件夹不存在。那么,只需运行以下代码即可解决问题。
python manage.py collectstatic
制作
list_display = ('balabala','balabala',)
在您的 ModelAdmin 中的 form 之前,这对我有用。
我在 django 1.10.2 中使用 django-autocomplete-light 3.2.1。在管理员而不是自动完成字段中,我看到了一个 select 字段。我按照 here.
的说明进行操作套餐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',
),
]
但是,自动完成不起作用。在管理员中,我只看到普通管理员 select 字段。我的代码可能有什么问题?
首先,我检查了 Firefox 控制台并发现了一些错误,这意味着有一些代码错误或未加载静态文件。之后我检查了服务器中的静态文件夹,发现自动完成文件夹不存在。那么,只需运行以下代码即可解决问题。
python manage.py collectstatic
制作
list_display = ('balabala','balabala',)
在您的 ModelAdmin 中的 form 之前,这对我有用。