Как я могу ограничить django-taggit принимать только строчные слова? - PullRequest
4 голосов
/ 27 мая 2011

Я использую django-taggit. Я бы хотел, чтобы все теги были в нижнем регистре, а также устанавливал диапазон номеров тегов (скажем, от 1 до 5, как и stackoverflow). Есть ли способ сделать это легко с django-taggit? Спасибо!

Ответы [ 3 ]

3 голосов
/ 20 августа 2011

Это довольно легко сделать с помощью django-taggit.Подкласс TagBase и применение ограничения нижнего регистра в методе сохранения.Остальное - точка котла, поэтому TaggableManager может использовать ваш подкласс.

class LowerCaseTag(TagBase):
    def save(self, *args, **kwargs):
        self.name = self.name.lower()
        super(LowerCaseTag, self).save(*args, **kwargs)

class LowerCaseTaggedItem(GenericTaggedItemBase):
    tag = models.ForeignKey(LowerCaseTag, related_name="tagged_items")

class YourModel(models.Model):
    tags = TaggableManager(through=LowerCaseTaggedItem)

Вы также можете установить ограничение диапазона для номеров тегов в методе сохранения.

3 голосов
/ 27 мая 2011

Вы можете проверить эту ветку.https://github.com/shacker/django-taggit имеет настройку FORCE_LOWERCASE.

2 голосов
/ 09 января 2016

Старый вопрос, но теперь есть следующие настройки для работы с регистрами без учета регистра:

TAGGIT_CASE_INSENSITIVE = True
...