Django Taggit Tutorial

Tags are categories: something that categorizes various pieces into one. For example, a tag python can have articles related to Python. This functionality of tags is needed most in a blog website to organize content.

What is Taggit in Django

django-taggit is a generic tagging library for Django. It allows the association of multiple tags with any Django model instance and makes the retrieval of tags simple. ```django-taggit`` works with Django 2.2+ and Python 3.6+.

How to install & setup django-taggit

  • Step1: Install django-taggit using pip install django-taggit

  • Step2: Add taggit to your project’s INSTALLED_APPS inside settings.py.

  • Step3: Run migrations using python manage.py makemigrations &&python manage.py migrate

Optional: It always best practice to use virtual environment to install third party libraries. Learn more about virtual environment in python.

How do you use Taggit

Set any model field to TaggableManager you want to enable tagging.

from django.db import models 
from taggit.managers import TaggableManager 
class Blog(models.Model): 
    # ... other fields here 
    tags = TaggableManager()

How to add tags to your post or article from the Django admin

  • In your Django admin, there should be a model named tags

  • Click Add custom tags, put the tag name, and click on Save.

  • By now, you should have a list of tags created; something like this.

  • Now when you add your blog post or article, in your tags field type the name of the tags you created separated by a comma(,)

That's it for admin.

Other ways of creating and adding tags to posts it given below:

post = Blog.objects.create(name="how to use taggit")
post.tags.add("python", "django", "ubuntu")
post.tags.all()
[<Tag: python>, <Tag: django>, <Tag: ubuntu>]
post.tags.remove("ubuntu")
post.tags.all()
[<Tag: python>, <Tag: django>]
Blog.objects.filter(tags__name__in=["python"])
[<Blog: post1>, <Blog: post2>]

Is django-taggit CASE-INSENSITIVE?

By default django-taggit is CASE-INSENSITIVE, to make it CASE-SENSITIVE set TAGGIT_CASE_INSENSITIVE to True in your settings.py file.

I hope this tutorial helped in adding tags to your Django application.

Did you find this article valuable?

Support Nitin Raturi by becoming a sponsor. Any amount is appreciated!