# settings.py
INSTALLED_APPS = (
...
'taggit',
)
# models.py
from taggit.managers import TaggableManager
class SomeModel(models.Model):
tags = TaggableManager()
# forms.py
from taggit.forms import TagField
class SomeForm(forms.ModelForm):
class Meta:
model = SomeModel
tags = TagField(label="tags")
# views.py
SomeModel.objects.filter(tags__name='python')
SomeModel.objects.filter(tags__name__in=('python', 'django')).distinct()
taggit.managers.
TaggableManager
(blank, verbose_name, help_text)Менеджер, реализующий возможность работы с тегами.
add
(*tag_names)Добавляет теги
record.tags.add("python")
record.save()
all
()Возвращает все теги
post.tags.all()
# [<Tag: jazz>, ...]
clear
()Удаляет все теги
record.tags.clear()
record.save()
remove
(*tag_names)Удаляет теги
record.tags.remove("python", "django")
record.save()
set
(*tag_names)Удаляет все теги и записывает новые
record.tags.set("python")
record.save()
taggit.forms.
TagField
(label)Поле для формы
если введенная строка не содержит запятых, двойных кавычек, то каждое слово это отдельный тег
строки в двойных кавчках, считаются отдельными тегами
строки, разделенные запятыми считаются отдельными тегами
taggit.forms.
TagWidget
HTML виджет