Django - django-autocomplete-light 设置如何
Posted
技术标签:
【中文标题】Django - django-autocomplete-light 设置如何【英文标题】:Django - django-autocomplete-light setup how to 【发布时间】:2017-03-26 18:24:20 【问题描述】:我正在关注如何设置 django-autocomplete 字段的教程,我正在努力让它工作。教程如下:https://django-autocomplete-light.readthedocs.io/en/master/tutorial.html
设置已安装的应用程序
INSTALLED_APPS = (
'dal',
'dal_select2',
'django.contrib.admin',
项目 urls.py
from textchange.views import TextbookAutoComplete
urlpatterns = [
url(r'^textbook-autocomplete$', TextbookAutoComplete.as_view(), name='textbook-autocomplete'),
HTML
<form method="POST"> % csrf_token %
% for field in form3 %
field
% endfor %
<input id="search" class="button" type="submit" value="Search Textbooks" name="Search"></input>
</form>
Forms.py
class Search(forms.ModelForm):
longschool = forms.ModelChoiceField(
queryset=Textbook.objects.all(),
widget=autocomplete.ModelSelect2(url='textbook-autocomplete')
)
class_name = forms.ModelChoiceField(
queryset=Textbook.objects.all(),
widget=autocomplete.ModelSelect2(url='textbook-autocomplete')
)
isbn = forms.ModelChoiceField(
queryset=Textbook.objects.all(),
widget=autocomplete.ModelSelect2(url='textbook-autocomplete')
)
class Meta:
model = Textbook
fields = ('longschool', 'class_name', 'isbn')
Views.py
class TextbookAutoComplete(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 Textbook.objects.none()
qs = Textbook.objects.all()
if self.q:
qs = qs.filter(name__istartswith=self.q)
return qs
添加了jQuery
<script type="text/javascript" src="% static "admin/js/jquery.js" %"></script>
当表单显示在我的 html 中时,它只是三个没有输入字段的下拉菜单(就像没有任何地方可以输入一样)。谁能看到我错过了什么?
任何帮助将不胜感激。
【问题讨论】:
问题解决了吗? 不,抱歉,我想我已经转移到其他包了 昨晚我遇到了同样的问题,后来解决了,但是你移动了哪个包? 【参考方案1】:我刚刚遇到了同样的问题并且能够解决它。我有2个问题。我忘记在我加载的表单下方加载 form.media
。确保在安装 django-autocomplete-light 包后运行 python manage.py collectstatic 命令。 (这会将这个第三方包的静态文件复制到您自己的静态文件夹中)。
django-autocomplete-light 尝试加载这些静态文件表单
static/admin/js/vendor/
,但由于某种原因文件不存在并且无法加载。我手动将 javascript 和 css 文件包含在模板的标题中,其中加载了带有自动完成输入的表单,并且最终起作用了:
在模板中加载表单时:
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script src="http://code.jquery.com/ui/1.9.2/jquery-ui.js"></script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/css/select2.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.0.6-rc.0/js/select2.full.js"></script>
</head>
<body>
form.as_p
form.media
</body>
【讨论】:
这个答案把我引向了正确的方向:***.com/a/40578839/2174832 你的评论让我很开心 :)以上是关于Django - django-autocomplete-light 设置如何的主要内容,如果未能解决你的问题,请参考以下文章