2010-02-03 6 views
1

Quelqu'un peut-il me dire comment utiliser le marquage automatique dans les modèles django?jquery autocomplete tagging

Je l'ai fait dans l'interface d'administration django mais je suis confus à la façon de le faire dans le modèle.

Merci à l'avance

+0

Il existe une nouvelle solution depuis février 2012: http://nemesisdesign.net/blog/coding/django-tagging-autocomplete-tag-it-jquery-ui/ –

Répondre

1

Ceci est d'un modèle où je mis en œuvre autocomplete

$(document).ready(function() { 

    $("#searchbox").autocomplete('/search_stuff/', { 
     width: 300, 
     multiple: false, 
     matchContains: true, 
     delay: 900, 
     extraParams: { 
       s: function() { return $("#status").val(); } 
     } 
}); 

Où search_stuff retourner une liste de textes de tous les éléments qui équipait les critères. Est ce que ça aide?

+0

Je ne connais pas tous les javascript et css sont importés correctement ..mais il n'a pas encore travaillé .... quelqu'un peut-il suggérer quelque chose de nouveau .. –

2

Dans mon modèle j'ai ce code:

$(document).ready(function(){ 
    $("#tags1").autocomplete("/taglookup/", { 
     width: 320, 
     multiple: true, 
     multipleSeparator: " " 
     }); 
    } 

et sur mon url.py j'ai cela sur le tuple urlparttern, il peut être quelque chose en fonction de la façon dont vous voulez vous câbler vues et urls!

(r'^taglookup/$', 'twine.twineapp.views.tag_lookup') 

et sur mon views.py i ont la vue tag_lookup mis en œuvre:

def tag_lookup(request): 
    # Default return list 
    results = [] 
    if request.method == "GET": 
     if request.GET.has_key(u'q'): 
      value = request.GET[u'q'] 
      # Ignore queries shorter than length 2 
      if len(value) > 2: 
       TI = Tag.objects.filter(name__startswith=value.lower()) 
       results = [ x.name for x in TI] 
    return HttpResponse('\n'.join(results), mimetype='text/plain') 

PS: Am en utilisant le paquet Tagging, c'est pourquoi j'ai l'objet de balise dans le code ci-dessus.

+0

+1. Cependant, je suppose que cela peut devenir lent si vous avez des milliers de balises, car cela créera une liste à chaque fois que vous appellerez 'tag_lookup'. – Markon

2

Vous pouvez utiliser my django-tagging-autocomplete reusable app et profiter du widget de formulaire TagAutocomplete fourni. Vous pouvez en savoir plus sur l'utilisation du widget in the documentation sous "Utilisation du widget de formulaire".

Veuillez noter que l'application nécessite que vous utilisiez django-tagging pour vos tags. Vous devez également mettre {{ form.media }} (où «formulaire» est le nom de votre formulaire) à l'intérieur de la section <head> de votre modèle, pour permettre au widget d'inclure ses fichiers JavaScript.

+0

mais cela n'a toujours pas fonctionné .. tous les css et javascript sont importés ... –

+0

"tous les css et javascript sont importés" ... donc si vous regardez dans la source 'jquery.autocomplete.js' est inclus dans l'en-tête, et il y a un extrait de code JavaScript à côté du code ''? Ça devrait marcher. Assurez-vous également que l'URL utilisée pour récupérer la liste des tags via AJAX est accessible. Si cela ne vous aide pas, pourriez-vous me fournir l'URL d'un exemple? –

+0

c'est une information très importante mais doc ne la mentionne pas :(merci @Ludwik Trammer – soField