Как пользоваться
Скачать, поместить куда-нибудь в ваш проект, и прописать директорию приложения в настройки в INSTALLED_APPS. Там же, в настройках, проследите, чтобы в TEMPLATE_LOADERS был раскомментирован 'django.template.loaders.app_directories.load_template_source', чтобы библиотека находила шаблон контрола для форм.
Добавить теги к вашей модели:
from myproject.tags.models import Tag
from myproject.tags import fields
class Article(models.Model):
...
tags = fields.TagsField(Tag)
Полем "tags" в коде можно пользоваться точно так же, как стандатным ManyToManyField с той разницей, что во всех формах, созданных с помощью автоматических манипуляторов (включая и те, которые создаются в generic views) для тегов будет отображаться отдельный блок редактирования.
Для собственных манипуляторов это поле можно включать явно:
from django.forms import Manipulator
from myproject.tags import fields
class MyManipulator(Manipulator):
def __init__(self):
self.fields = [
...
fields.TagsFormField('tags'),
]
Все существующие в системе теги обычно хранятся в собственной модели Tag, которая
есть в библиотеке. Они используются, в частности, и для автоподсказки в формах. Если
вместо встроенной модели используется своя, надо научить поле манипулятора
использовать именно ее:
self.fields = [
...
fields.TagsFormField('tags', model=some.other.TagModel),
]
Настройки
В большинстве случае, для того, чтобы поле тегов начало работать, ему надо указать две настройки:
JS_URL
- URL к папке, в которой лежит файл "tags.js" из комплекта приложения. Можно перенести его к вашим скриптам, а можно оставить в исходной папке, но в настройках веб-сервера прописать путь к ней для того, что написано в JS_URL.
STYLE_URL
- URL к папке, в которой лежит графика и стиль для контрола тегов из папки "style" в дистрибутиве.
Если эти две настройки не указаны, то по умолчанию будут использованы /media/js/ и /media/css/. Поэтому если ваши скрипты и стили лежат по этим путям, то настройки не обязательным, можно просто перенести туда файлы из дистрибутива :-).
Еще одна не обзяательная настройка:
TAGS_URL
- URL к странице тега на вашем сайте, если она есть. Чаще всего такой страницей служит поиск объектов, у которых есть данный тег. Выглядит как "http://domain/path/%s/", и тег подставляется в строку вместо %s. Если настройка не задана, то названия тегов отображаются без ссылки.
Использование в админке Django
Поле будет автоматически отображаться в админке, но чтобы оно нормально работало, надо подключить javascript тегов к модели:
class MyModel(models.Model):
...
class Admin:
js = (
'js/tags.js',
)
Поскольку админка использует относительные URL, надо скопировать "tags.js" в директорию media-файлов админки.
Чтобы это поле еще и нормально выглядело, надо записать все стили тегов в CSS-файлы админки.