首页 > 解决方案 > Tagulous - 让自动完成字段工作

问题描述

我已经成功地将 Tagulous 安装到我的 Django 应用程序中,并且我创建了一个 Tag 文本字段,但我正在努力让 AutoComplete 过程正常工作。我一直在参考 Tagulous 的说明。

我已经安装了 AutoComplete 并在我的 Settings.py 中包含了相关的 JS 和 CSS 库。除了确保安装在 INSTALLED_APPS 下'dal''dal_select2'

当我转到我的表单时,我没有收到任何错误,并且出现了技能标签字段。尽管没有任何自动完成功能的迹象,该字段目前只是作为没有自动完成功能的常规标签字段。

到目前为止,这是我的代码:

Views.py -(我已导入from dal import autocomplete此文件)


class PostCreateView(LoginRequiredMixin, CreateView):
   
    model = Post
    fields = ['content', 'image', 'skills']
    widgets = {
            'skills': autocomplete.ModelSelect2(url='skills-autocomplete')
        }
    template_name = 'sfsrv/post_new.html'
    success_url = '/'
    
    def form_valid(self, form):
        form.instance.author = self.request.user
        return super().form_valid(form)
    
    def get_context_data(self, **kwargs):
        data = super().get_context_data(**kwargs)
        data['tag_line'] = 'Create new post'
        return data

class SkillsAutocomplete(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 Skills.objects.none()

        qs = Skills.objects.all()

        if self.q:
            qs = qs.filter(name__istartswith=self.q)

        return qs

URLs.py(我已经导入from sfsrv.views import SkillsAutocomplete到这个文件中。

    url(
        'skills-autocomplete/$',
        SkillsAutocomplete.as_view(),
        name='skills-autocomplete',
    ),

Models.py(我已经将两者都导入了tagulous.models 这个from dal import autocomplete文件

class Post(models.Model):
    content = models.TextField(max_length=1000)
    date_posted = models.DateTimeField(default=timezone.now)
    image = models.ImageField(default='default.png', upload_to='srv_media')
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    skills = tagulous.models.TagField()
    tags_store = models.TextField(blank=True)

    def __str__(self):
        return self.content[:5]
```
Any assistance would be really appreciated as I'm new to Tagulous in Django! :-)

标签: pythondjangoautocomplete

解决方案


推荐阅读