# TagsField для Django


## ЧТО ЭТО

TagsField — это маленькое приложение для [Django](http://www.djangoproject.com/),
которое реализует возможность приписывать теги к произвольным объектам в вашем
приложении, отображать их и редактировать в формах.

Приложение содержит:

- Модель тега, который содержит собственно слово тега и ничего лишнего.
  В нее можно при желании добавить что угодно.
- Новый тип поля TagsField, который по сути — стандартный ManyToManyField,
  но со своим типом виджета для формы.
- Виджет для формы, который умеет редактировать теги с автоподсказкой.


## ОСОБЕННОСТИ

Эти вещи скорее всего повлияют на ваше решение использовать или не использовать
TagsField:

- Добавление тегов происходит полностью по инициативе пользователя: если
пользователь добавил тег, которого нет, тот автоматически создается.

- Автоподсказка не использует ajax, все теги грузятся сразу на страницу. Поэтому
для большого количества тегов оно может не подойти.

- Подбор значений в автоподсказке идет с игнорированием незначительных отличий
написания (знаки препинания, пробелы, слово "the").

- Теги не категоризируются. Если вы вешаете теги на разные типы объектов, их
исходный набор будет одинаков.


## УСТАНОВКА И ИСПОЛЬЗОВАНИЕ

1.  Поместить директорию 'tagsfield' в питоновский путь.

2.  Включить 'tagsfield' в INSTALLED_APPS

3.  Установить нужные таблицы в базу через ./manage.py syncdb

4.  Скопировать (или слинковать) директорию 'media' в свой MEDIA_ROOT, где она
    будет доступна по HTTP через MEDIA_URL.

После этого можно использовать поле тегов в ваших моделях.

    from tagsfield.models import Tag
    from tagsfield import fields

    class Article(models.Model):
        ...
        tags = fields.TagsField(Tag)

Полем "tags" в коде можно пользоваться точно так же, как стандатным
ManyToManyField с той разницей, что в формах, создаваемых по этой модели,
для тегов будет отображаться отдельный блок редактирования (см. demo.html). Чтобы
она реально работал, требуемые скрипты и стили нужно заранее подключить на странице,
где отображается форма:

    <head>
    ...
    {{ form.media }}
    ...
    </head>

В админке поле тоже будет работать, и там media подключать не нужно, она это делает
сама.

Все существующие в системе теги обычно хранятся в собственной модели Tag, которая
есть в библиотеке. Они используются, в частности, и для автоподсказки в формах.
Вместо нее можно использовать свою модель, важно лишь, чтобы она отвечала таким
требованиям:

- содержала поле 'value' — отображаемый текст тега
- содержала поле 'norm_value' — нормализованный текст, по которому идет поиск
- все остальные поля должны быть или null'овые, или с default'ами, чтобы
  объект тега можно было создать, зная только value


## НАСТРОЙКИ

Есть одна необязательная настройка:

`TAGS_URL`
: URL к странице тега на вашем сайте, если она есть. Чаще всего такой
  страницей служит поиск объектов, у которых есть данный тег. Выглядит
  как "http://domain/path/%s/", и тег подставляется в строку вместо %s.
  Если настройка не задана, то названия тегов отображаются без ссылки.


## КООРДИНАТЫ

Версия: 2.3
URL:    http://softwaremaniacs.org/soft/tagsfield/
Автор:  Иван Сагалаев (Maniac@SoftwareManiacs.Org)

Лицензионное соглашение читайте в файле LICENSE (лицензия — BSD, если коротко).
