2017-02-18 7 views
0

Ich habe gearbeitet, um Ajax Autocomplete zu machen. Ich installierte das Paket autocomplete-light und versuchte select2 zu importieren, scheiterte jedoch. Es zeigt eine Fehlermeldung wie diese an.Django: 'Funktion' Objekt hat kein Attribut 'ModelSelect2'

Fehlermeldung.

'function' object has no attribute 'ModelSelect2' 

settings.py

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

template.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') 
     } 

Antwort

1
from pip import autocomplete 

Wie ist dies im Zusammenhang mit der Funktionalität hinzufügen Sie versuchen? Pip ist das Programm, das Python-Pakete für Sie installiert und das ist nur eine Dienstprogrammfunktion.

Sie sind dann aus irgendeinem Grund versuchen, ein ModelSelect2 Objekt von dieser Funktion zu bekommen?

Ich denke, Sie haben nur Ihre Importe vermasselt und was Sie verwenden möchten, ist django_select2.forms.ModelSelect2Widget (vorausgesetzt, Sie verwenden django-select2).

Verwandte Themen