django-autocomplete-light在表单中显示空下拉列表
我正在尝试使用django-autocomplete-light来自本教程https://github.com/yourlabs/django-autocomplete-light/blob/master/docs/tutorial.rst
我用pip安装它并将其添加到我的设置文件中
INSTALLED_APPS = ( 'dal', 'dal_select2',
对于我的租户价值
我的租户模型是
class Tenant(CommonInfo): version = IntegerVersionField( ) first_name = models.CharField(max_length=30) last_name = models.CharField(max_length=40) def __unicode__(self): return u'%s %s %s ' % ("#", self.id,"first_name", self.first_name, "last_name")
在我的自动完成视图中:
from django.shortcuts import render from dal import autocomplete from client.models import Tenant class TenantAutocomplete(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 Tenant.objects.none() qs = Tenant.objects.all() if self.q: qs = qs.filter(last_name__istartswith=self.q) return qs
在自动完成url中
from django.conf.urls import url, include,patterns from client import views urlpatterns = [ url( r'^tenant-autocomplete/$', views.TenantAutocomplete.as_view(), name='tenant-autocomplete', ), ]
并以forms
class LeaseTenantForm(forms.ModelForm): tenant = forms.ModelChoiceField( queryset=LeaseTenant.objects.all(), widget=autocomplete.ModelSelect2(url='tenant-autocomplete') ) class Meta: model = LeaseTenant exclude = ['lease']
但是在浏览器中渲染后,我没有看到输入文本字段,而是看到空的下拉列表。 在实际看来
def tenant_new(request,pk,uri): lease = get_object_or_404(Lease, pk=pk) title = 'tenant' uri = _get_redirect_url(request, uri) if request.method == "POST": form = LeaseTenantForm(request.POST) if form.is_valid(): tenant = form.save(commit=False) tenant.lease = lease tenant.save() messages.add_message(request, messages.SUCCESS, str(tenant.id) + "-SUCCESS Object created sucssefully") return redirect(uri) else: form = LeaseTenantForm() return render(request, 'object_edit.html', {'form': form, 'title': title, 'extend': EXTEND})
我的模板文件
{% block title %} Add/Edit {{ title }} {% endblock title %} {% block content %} {{ title }}
{% endblock content %}
所以基本上自动完成function不起作用。 我应该validation什么才能使它工作?
我遇到了同样的问题。 这是一个很好的参考: django-autocompletion-light简单外键完成显示不可编辑的下拉窗口小部件
确保在头文件中加载jquery,并使用表单的{{ form.media }}
标记。
以下是我在头文件中加载jquery的方法:
此外,您是否尝试过访问tenant-autocomplete/
url以查看是否在该页面上获得了结果,如教程https://django-autocomplete-light.readthedocs.io/en/master/tutorial中所述。 HTML
如果您无法从url获取应该是您修复的第一个错误的结果。