我已经完全启动并运行了 Taggit,并且想要配置 Autocomplete Light 以便在用户在我的应用程序中选择他们喜欢的标签时启用 Select2 下拉菜单。
我已经安装了 DAL
、dal_select2
和 dal_queryset_sequence
库。
我已经创建了一个表单,我的用户可以在其中简单地上传照片、添加内容和 TagField。虽然,TagField 目前作为普通文本字段运行(但标签确实成功保存到我的 Taggit 应用程序中) - 我只是在努力让 Select2 下拉菜单正常工作。
这是我的设置(就已安装的应用程序而言:
设置.py
INSTALLED_APPS = [
'core.apps.AConfig',
'users.apps.UConfig',
'crispy_forms',
'emoji_picker',
'taggit',
'dal',
'dal_select2',
'dal_queryset_sequence',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sites',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
]
在我的 Views.py 中
from dal import autocomplete
class TagAutocomplete(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 Tag.objects.none()
qs = Tag.objects.all()
if self.q:
qs = qs.filter(name__istartswith=self.q)
return qs
网址.py
from core.views import TagAutocomplete
urlpatterns = [
url(
r'^tag-autocomplete/$',
TagAutocomplete.as_view(),
name='tag-autocomplete',
),
]
Forms.py
import dal
from dal import autocomplete
from taggit.models import Tag
class PostForm(autocomplete.FutureModelForm):
tags = forms.ModelChoiceField(
queryset=Tag.objects.all()
)
class Meta:
model = Post
fields = ('__all__')
widgets = {
'tags': autocomplete.TaggitSelect2(
'tag-autocomplete'
)
}
我已经查看了 Django Autocomplete Light 的文档,但我不太确定从我已有的代码中去哪里。
任何指导将不胜感激!
谢谢! :-)