【问题标题】:Django : 'function' object has no attribute 'ModelSelect2'Django:'function'对象没有属性'ModelSelect2'
【发布时间】:2017-07-07 19:33:51
【问题描述】:

我一直在努力使 ajax 自动完成。我安装了包 autocomplete-light 并尝试导入 select2 但失败了。它显示这样的错误消息。

错误信息。

 'function' object has no attribute 'ModelSelect2'

settings.py

INSTALLED_APPS = [
'dal',
'dal_select2',
'dal_queryset_sequence',

模板.html

<form action="{% url 'blog:ajax_article_autocomplete' %}" method="post">
<div class="ui-widget">
<label for="id_articles">search: </label>
<input id="id_articles" type="text" size="50" name="articles" class="ui-autocomplete-input" autocomplete="off">
</div>
</form>

views.py

from django.utils.encoding import force_bytes
from django.utils.http import urlsafe_base64_encode, urlsafe_base64_decode
from django.views.generic.edit import FormView
from pip import autocomplete

def ajax_article_autocomplete(request):
    if request.is_ajax():
        q = request.GET.get('term', '')
        articles = Article.objects.filter(title__icontains = q )[:10]
        results = []
        for article in articles:
            article_json = {}
            article_json['id'] = article.id
            article_json['label'] = article.title
            article_json['value'] = article.title
            results.append(article_json)
        data = json.dumps(results)
    else:
        data = 'fail'
    mimetype = 'application/json'
    return HttpResponse(data, mimetype)

urls.py

url(r'^ajax/article/autocomplete/$', views.ajax_article_autocomplete, name='ajax_article_autocomplete'),

forms.py

class SearchForm(forms.ModelForm):
    class Meta:
        model = User
        fields = ('__all__')
        widgets = {
            'title': autocomplete.ModelSelect2(url='ajax_tag_autocomplete')
        }

【问题讨论】:

    标签: jquery python ajax django autocomplete


    【解决方案1】:
    from pip import autocomplete
    

    这与您尝试添加的功能有什么关系? Pip 是为你安装 python 包的程序,这只是一个实用功能。

    然后你出于某种原因试图从这个函数中获取一个ModelSelect2 对象?

    我认为你只是搞砸了你的导入,你想要使用的是 django_select2.forms.ModelSelect2Widget(假设你使用的是 django-select2)。

    【讨论】:

      猜你喜欢
      • 2021-01-12
      • 2016-12-08
      • 2018-05-07
      • 2020-11-13
      • 2021-10-22
      • 1970-01-01
      • 1970-01-01
      • 2020-05-21
      • 2019-08-13
      相关资源
      最近更新 更多