Django-приложение для категоризации.
Для тех, кто считает, что подход с использованием меток страдает недостатком стуктурирования. Приложение служит для структурирования данных: создайте иерархию категорий и привязывайте к этим категориям сущности вашего сайта.

    # Где-то вviews.py
from django.shortcuts import render, get_object_or_404

# Допустим модель Article унаследована от примеси sitecats.models.ModelWithCategory.
from .models import Article


def article_details(self, request, article_id):
"""Как видите, в этом представлении нет ничего выдающегося.
Однако оно отрисует для нас страницу с категориями статьи.

"""
return self.render(request, 'article.html', {'article': get_object_or_404(Article, pk=article_id)})

def article_edit(self, request, article_id):
"""Это представление мы обучим отрисовке редактора
категорий и обработке запросов от него.

"""
article = get_object_or_404(Article, pk=article_id)

# Включаем редактор для статьи, позволяем пользователю
# добавлять свои подкатегории в категории language и os
# (допустим сы уже создали их через админку Django),
# и привязывать кподкатегориям статью.
article.enable_category_lists_editor(
request,
editor_init_kwargs={'allow_new': True},
additional_parents_aliases=['language', 'os']
)

form = ... # Далее обычная обработка редактирования Article.

return render(request, 'article.html', {'article': article, 'form': form})

В шаблоне нам нужно будет использовать шаблонный тег sitecats_categories. Для простоты демонстрации используем один шаблон для обоих представлений.

На заметку
Дополнительная функциональность (например, отрисовка облака категорий и улучшенный редактор) потребуют включения JS sitecats.min.js.

    {% extends "base.html" %}
{% load sitecats %}

{% block contents %}
<script src="{{ STATIC_URL }}js/sitecats/sitecats.min.js">< /script>

<h1>{{ article.title }}< /h1>
<div id="article_categories">
{% sitecats_categories from article %}
< /div>
Далее идёт код формы редактирования.
{% endblock %}

За более подробным описанием и примерами обратитесь к документации (англ.).

Смотрите также:

Категории

Окружение
Проект

На заметку
В разделе «События» можно узнать о надвигающихся событиях мира Python, а также поделиться своими. Если вы являетесь организатором встречи/конференции/спринта, зарегистрируйте это событие в указанном разделе, чтобы о нём узнали все желающие.