我正在尝试在我的项目中使用Django Autocomplete Light,请遵循以下tutorial
我在Django设置上添加了DAL:
INSTALLED_APPS = [
'dal',
'dal_select2',
...
]
这是受DAL软件包影响的所有代码
project / urls.py:
path('app/', include((app_urls, 'app'), namespace='app')),
app / urls.py:
path('prueba/', app_views.prueba, name='prueba'),
path('brand_autocomplete/', app_views.BrandAutocompleteView.as_view(), name='brand_autocomplete'),
models.py:
class Brand(models.Model):
name = models.CharField(verbose_name="Nombre", max_length=100, unique=True)
class Budget(models.Model):
name = models.CharField(verbose_name="Nombre", max_length=100)
brand = models.ForeignKey('Brand', verbose_name="Marca", related_name='budget_brand', null=True, on_delete=models.SET_NULL)
forms.py:
class BudgetForm(forms.ModelForm):
brand = forms.ModelChoiceField(queryset=app_models.Brand.objects.all(), widget=autocomplete.ModelSelect2(url='app:brand_autocomplete'))
class Meta:
model = app_models.Budget
fields = '__all__'
view.py:
class BrandAutocompleteView(autocomplete.Select2QuerySetView):
def get_queryset(self):
print("Brand Autocomplete")
if not self.request.user.is_authenticated:
return app_models.Brand.objects.none()
qs = app_models.Brand.objects.all()
if self.q:
qs = qs.filter(name__istartswith=self.q)
return qs
def prueba(request):
form = app_forms.BudgetForm()
return render(request, 'prueba.html', {
'form': form
})
prueba.html:
{% extends "base.html" %}
{% load static %}
{% block content %}
<div>
<form action="" method="post">
{% csrf_token %}
{{ form.as_p }}
</form>
</div>
{% endblock content %}
我在base.html中有这个JS:
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
结果是void下拉输入:
<select name="brand" required="" id="id_brand" data-autocomplete-light-language="es" data-autocomplete-light-url="/app/brand_autocomplete/" data-autocomplete-light-function="select2">
<option value="" selected="">---------</option>
</select>
有人可以帮助我吗? 预先感谢。