Skip to content

ensignavenger/tagulous

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Django Tagulous - Fabulous Tags

This is a fork of the excellent Django Tagulous library, with modifications made to support Django 3.0

This code may be very broken, I was asked to make it public by a fellow Django user while the Tagulous maintainer is working towards offcial Django 3.0 support.

Use at your own risk!

A tagging library for Django built on ForeignKey and ManyToManyField, giving you all their normal power with a sprinkling of tagging syntactic sugar.

https://travis-ci.org/radiac/django-tagulous.svg?branch=master https://coveralls.io/repos/radiac/django-tagulous/badge.svg?branch=master&service=github

Features

  • Easy to install - simple requirements, simple syntax, lots of options
  • Based on ForeignKey and ManyToManyField, so it's easy to query
  • Autocomplete support built in, if you want it
  • Supports multiple independent tag fields on a single model
  • Can be used as a user-customisable CharField with choices
  • Supports trees of nested tags, for detailed categorisation
  • Admin support for managing tags and tagged models

Version 0.14.1; supports Django 1.4.2 to 2.2, on Python 2.7 and 3.2 to 3.7.

See the Documentation for details of how Tagulous works; in particular:

Quickstart

Install with pip install django-tagulous, add tagulous to Django's INSTALLED_APPS, then start adding tag fields to your model:

from django.db import models
import tagulous

class Person(models.Model):
    name = models.CharField(max_length=255)
    title = tagulous.models.SingleTagField(initial="Mr, Mrs, Miss, Ms")
    skills = tagulous.models.TagField()

You can now set and get them using strings, lists or querysets:

myperson = Person.objects.create(name='Bob', title='Mr', skills='run, hop')
# myperson.skills == 'run, hop'
myperson.skills = ['jump', 'kung fu']
myperson.save()
# myperson.skills == 'jump, "kung fu"'
runners = Person.objects.filter(skills='run')

Behind the scenes your tags are stored in separate models (by default), so because the fields are based on ForeignKey and ManyToManyField more complex queries are simple:

qs = MyRelatedModel.objects.filter(
    person__skills__name__in=['run', 'jump'],
)

As well as this you also get autocompletion in public and admin forms, automatic slug generation, unicode support, you can build tag clouds easily, and can nest tags for more complex categorisation.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published