Django自动填充浅空下拉列表

时间:2020-06-24 07:30:57

标签: jquery django django-autocomplete-light

我正在尝试在我的项目中使用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>

有人可以帮助我吗? 预先感谢。

0 个答案:

没有答案