Несколько полей тегов на одной модели в Django, или поля ManyToMany? - PullRequest
2 голосов
/ 02 ноября 2011

У меня есть модель Book, для которой нужны два отдельных поля тегов: genre и tags.Я обдумываю, будет ли лучше написать для этого мои собственные модели Genre и BookTag, и связать их с ManyToManyField s или использовать DjangoTagging для достижения того же.

В конечном итоге мне нужно, чтобы пользователи могли фильтровать либо по genre, либо по tag, но мне не нужна функциональность Облака тегов.

Из того, что яКак видите, Django Tagging допускает два TagField s, но затем он объединяет оба в одно облако тегов.Для меня это не проблема, но прежде чем я начну рефакторинг всего моего кода для использования Django Tagging вместо моих собственных полей ManyToMany, есть ли какие-то другие уловки использования Django Tagging в этой ситуации, о которых мне следует знать?

1 Ответ

4 голосов
/ 02 ноября 2011

Отрицательные

  • Поля тегов Django не имеют полей слагов, поэтому вам придется вручную убрать тег tag.name, если вы хотите использовать их в Urls

  • Вы не можете (без подклассов моделей django-taggings) добавлять любые другие поля к жанру или тегу книги, так что вы не сможете легко описать жанр или тег.

  • Относительно удобства использования: если вы используете теги django, вы, скорее всего, будете использовать TagField для ввода тегов (будь то жанры или закладки). Проблема в том, что вам нужно точно помнить, какие теги вы использовали ранее, в отличие от чужого ключа или поля многие из которых вы выбираете из списка.

Положительных

  • У тегов Django есть хороший API для запроса тегов и теговых элементов

django-taggit - еще одно приложение для тегирования, которое широко используется и все еще разрабатывается и преодолевает некоторые из вышеуказанных ограничений

...