django-taggit TaggableManager¶
Model example¶
Consider such a model, using django-taggit to handle tags for a model:
from django.db import models
from taggit.managers import TaggableManager
class TestModel(models.Model):
name = models.CharField(max_length=200)
tags = TaggableManager()
def __str__(self):
return self.name
View example¶
Extend
AlightTagAutocompleteView — a convenience
subclass that overrides get_result_value() to return result.name
so that TaggitAlight can match tags by name:
from dal import autocomplete
from taggit.models import Tag
class TagAutocomplete(autocomplete.AlightTagAutocompleteView):
def get_queryset(self):
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
Alternatively, extend AlightQuerySetView
directly and override get_result_value() yourself:
class TagAutocomplete(autocomplete.AlightQuerySetView):
def get_result_value(self, result):
return result.name
Don’t forget to Register the autocomplete view.
Form example¶
Use TaggitAlight:
class TestForm(autocomplete.FutureModelForm):
class Meta:
model = TestModel
fields = ('name',)
widgets = {
'tags': autocomplete.TaggitAlight(
'your-taggit-autocomplete-url'
)
}