===============================
Django Tagulous - Fabulous Tags
===============================
A tagging library for Django built on ForeignKey and ManyToManyField, giving
you all their normal power with a sprinkling of tagging syntactic sugar.
* Project site: http://radiac.net/projects/django-tagulous/
* Source code: https://github.com/radiac/django-tagulous
* Changelog: http://radiac.net/projects/django-tagulous/documentation/changelog/
.. image:: https://img.shields.io/pypi/v/django-tagulous.svg
:target: https://pypi.org/project/django-tagulous/
.. image:: https://github.com/radiac/django-tagulous/actions/workflows/ci.yml/badge.svg
:target: https://github.com/radiac/django-tagulous/actions/workflows/ci.yml
.. image:: https://codecov.io/gh/radiac/django-tagulous/branch/develop/graph/badge.svg?token=5VZNPABZ7E
:target: https://codecov.io/gh/radiac/django-tagulous
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
Supports Django 2.2 to 3.2, on Python 3.6 to 3.9.
See the `Documentation <http://radiac.net/projects/django-tagulous/documentation/>`_
for details of how Tagulous works; in particular:
* `Installation <http://radiac.net/projects/django-tagulous/documentation/installation/>`_
- how to install Tagulous
* `Example Usage <http://radiac.net/projects/django-tagulous/documentation/usage/>`_
- see examples of Tagulous in use
* `Upgrading <http://radiac.net/projects/django-tagulous/documentation/upgrading/>`_ -
how to upgrade Tagulous, and see what has changed in the
`changelog <http://radiac.net/projects/django-tagulous/documentation/changelog/>`_.
* `Contributing <http://radiac.net/projects/django-tagulous/documentation/contributing/>`_
- for how to contribute to Tagulous, and the planned
`roadmap <http://radiac.net/projects/django-tagulous/documentation/contributing/#roadmap>`_.
Quickstart
==========
Install with ``pip install django-tagulous``, add ``tagulous`` to Django's
``INSTALLED_APPS`` and `define the serializers`__, then start adding tag fields to your
model::
from django.db import models
from tagulous.models import SingleTagField, TagField
class Person(models.Model):
name = models.CharField(max_length=255)
title = SingleTagField(initial="Mr, Mrs, Miss, Ms")
skills = 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.
__ http://radiac.net/projects/django-tagulous/documentation/installation/
Raw data
{
"_id": null,
"home_page": "https://radiac.net/projects/django-tagulous/",
"name": "django-tagulous",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": "",
"keywords": "django tagging",
"author": "Richard Terry",
"author_email": "code@radiac.net",
"download_url": "https://files.pythonhosted.org/packages/a4/3e/3f8a66b2092fb4a9619b226232890a3174163d1dbae615e11797068f4d0c/django-tagulous-1.3.3.tar.gz",
"platform": "",
"description": "===============================\nDjango Tagulous - Fabulous Tags\n===============================\n\nA tagging library for Django built on ForeignKey and ManyToManyField, giving\nyou all their normal power with a sprinkling of tagging syntactic sugar.\n\n* Project site: http://radiac.net/projects/django-tagulous/\n* Source code: https://github.com/radiac/django-tagulous\n* Changelog: http://radiac.net/projects/django-tagulous/documentation/changelog/\n\n.. image:: https://img.shields.io/pypi/v/django-tagulous.svg\n :target: https://pypi.org/project/django-tagulous/\n\n.. image:: https://github.com/radiac/django-tagulous/actions/workflows/ci.yml/badge.svg\n :target: https://github.com/radiac/django-tagulous/actions/workflows/ci.yml\n\n.. image:: https://codecov.io/gh/radiac/django-tagulous/branch/develop/graph/badge.svg?token=5VZNPABZ7E\n :target: https://codecov.io/gh/radiac/django-tagulous\n\n\nFeatures\n========\n\n* Easy to install - simple requirements, **simple syntax**, lots of options\n* Based on ForeignKey and ManyToManyField, so it's **easy to query**\n* **Autocomplete** support built in, if you want it\n* Supports multiple independent tag fields on a single model\n* Can be used as a user-customisable CharField with choices\n* Supports **trees of nested tags**, for detailed categorisation\n* Admin support for managing tags and tagged models\n\nSupports Django 2.2 to 3.2, on Python 3.6 to 3.9.\n\n\nSee the `Documentation <http://radiac.net/projects/django-tagulous/documentation/>`_\nfor details of how Tagulous works; in particular:\n\n* `Installation <http://radiac.net/projects/django-tagulous/documentation/installation/>`_\n - how to install Tagulous\n* `Example Usage <http://radiac.net/projects/django-tagulous/documentation/usage/>`_\n - see examples of Tagulous in use\n* `Upgrading <http://radiac.net/projects/django-tagulous/documentation/upgrading/>`_ -\n how to upgrade Tagulous, and see what has changed in the\n `changelog <http://radiac.net/projects/django-tagulous/documentation/changelog/>`_.\n* `Contributing <http://radiac.net/projects/django-tagulous/documentation/contributing/>`_\n - for how to contribute to Tagulous, and the planned\n `roadmap <http://radiac.net/projects/django-tagulous/documentation/contributing/#roadmap>`_.\n\n\nQuickstart\n==========\n\nInstall with ``pip install django-tagulous``, add ``tagulous`` to Django's\n``INSTALLED_APPS`` and `define the serializers`__, then start adding tag fields to your\nmodel::\n\n from django.db import models\n from tagulous.models import SingleTagField, TagField\n\n class Person(models.Model):\n name = models.CharField(max_length=255)\n title = SingleTagField(initial=\"Mr, Mrs, Miss, Ms\")\n skills = TagField()\n\nYou can now set and get them using strings, lists or querysets::\n\n myperson = Person.objects.create(name='Bob', title='Mr', skills='run, hop')\n # myperson.skills == 'run, hop'\n myperson.skills = ['jump', 'kung fu']\n myperson.save()\n # myperson.skills == 'jump, \"kung fu\"'\n runners = Person.objects.filter(skills='run')\n\nBehind the scenes your tags are stored in separate models (by default), so\nbecause the fields are based on ``ForeignKey`` and ``ManyToManyField`` more\ncomplex queries are simple::\n\n qs = MyRelatedModel.objects.filter(\n person__skills__name__in=['run', 'jump'],\n )\n\nAs well as this you also get autocompletion in public and admin forms,\nautomatic slug generation, unicode support, you can build tag clouds easily,\nand can nest tags for more complex categorisation.\n\n__ http://radiac.net/projects/django-tagulous/documentation/installation/\n\n\n",
"bugtrack_url": null,
"license": "BSD",
"summary": "Fabulous Tagging for Django",
"version": "1.3.3",
"project_urls": {
"Documentation": "https://radiac.net/projects/django-tagulous/documentation/",
"Homepage": "https://radiac.net/projects/django-tagulous/",
"Source": "https://github.com/radiac/django-tagulous",
"Tracker": "https://github.com/radiac/django-tagulous/issues"
},
"split_keywords": [
"django",
"tagging"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "bb0e125a9dabc8668831e3c2142ca9fb10d33f69ca0c74cd03779e3372d05563",
"md5": "c038272496296705abfd2b634f7a2763",
"sha256": "ad3bb85f4cce83a47e4c0257143229cb92a294defa02fe661823b0442b35d478"
},
"downloads": -1,
"filename": "django_tagulous-1.3.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "c038272496296705abfd2b634f7a2763",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 285429,
"upload_time": "2021-12-25T19:16:01",
"upload_time_iso_8601": "2021-12-25T19:16:01.667839Z",
"url": "https://files.pythonhosted.org/packages/bb/0e/125a9dabc8668831e3c2142ca9fb10d33f69ca0c74cd03779e3372d05563/django_tagulous-1.3.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "a43e3f8a66b2092fb4a9619b226232890a3174163d1dbae615e11797068f4d0c",
"md5": "38be2ddca1ea47c5752cc588d1171bd4",
"sha256": "d445590ae1b5cb9b8c5a425f97bf5f01148a33419c19edeb721ebd9fdd6792fe"
},
"downloads": -1,
"filename": "django-tagulous-1.3.3.tar.gz",
"has_sig": false,
"md5_digest": "38be2ddca1ea47c5752cc588d1171bd4",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 348176,
"upload_time": "2021-12-25T19:16:03",
"upload_time_iso_8601": "2021-12-25T19:16:03.269540Z",
"url": "https://files.pythonhosted.org/packages/a4/3e/3f8a66b2092fb4a9619b226232890a3174163d1dbae615e11797068f4d0c/django-tagulous-1.3.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2021-12-25 19:16:03",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "radiac",
"github_project": "django-tagulous",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"tox": true,
"lcname": "django-tagulous"
}