Django-autocomplete-light显示为空下拉列表,而不是autocomplete小部件

时间:2019-05-14 13:11:34

标签: python django django-autocomplete-light

我正在尝试在我的项目中实现django-autocomplete-light,但无法弄清楚为什么它不向我显示自动完成小部件,而是始终显示空的下拉列表。

我遵循了教程:https://django-autocomplete-light.readthedocs.io/en/3.1.3/tutorial.html

我发现此问题已在其他stackoverflow问题中发生,但到目前为止,这些答案都没有帮助我。

我有以下模型:

class Vilt(models.Model):
    vilt_title = models.CharField(max_length=200, unique=True)

我创建了此自动完成视图:

class ViltAutocomplete(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 Vilt.objects.none()
        qs = Vilt.objects.all().order_by('vilt_title')

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

        return qs

我在指定小部件的地方使用这个ModelForm。

from .models import Vilt
from dal import autocomplete

class ViltSearchForm(forms.ModelForm):
  vilt_title = forms.ModelChoiceField(
    queryset = Vilt.objects.all(),
    widget = autocomplete.ModelSelect2(url='vilt-autocomplete')
  )

  class Meta:
    model = Vilt
    fields = ('vilt_title',)
from .views import (ViltAutocomplete,
                    )
urlpatterns = [
    #other paths
    path('vilt/autocomplete/', ViltAutocomplete.as_view(), name='vilt-autocomplete'),
    #other paths
]
{% extends "bierviltje/base.html" %}
{% load static %}
{% load crispy_forms_tags %}

{% block content %}
<div class="container">
#other forms
    <div>
        <form action="" method="post">
            {% csrf_token %}
            {{ vilt_search_form|crispy }}
            <input type="submit" />
        </form>
    </div>
#other forms
</div>
{% endblock content %}

{% block javascript %}
{{ vilt_search_form.media }}
{% endblock javascript %}

这是在base.html中的javascript块之前加载的Javascript:

<!-- jQuery first, then Popper.js, then Bootstrap JS -->
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
{% block javascript %}
{% endblock javascript %}

1 个答案:

答案 0 :(得分:0)

自您发布查询以来已有一段时间。 但是如果您还没有找到答案,请使用以下解决方案:

在您的ModelForm“ ViltSearchForm”中,请从更改

STATIC_URL = 'https://storage.googleapis.com/yantra-packs/static/'
# STATIC_URL = '/static/'

# STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static'), ]


PROJECT_DIR = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = os.path.join(PROJECT_DIR, 'static/')

STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static/'), ]

widget = autocomplete.ModelSelect2(url='vilt-autocomplete')

但是,如果可以在此处添加,我无法理解在独立模型上使用“自动完成”的原因。

非常感谢您提供反馈。