создавать теги без учета регистра с помощью django-taggit - PullRequest
7 голосов
/ 14 марта 2011

Я добавил теги = TaggableManager (blank = True) в мои модели, но я хочу, чтобы в моих тегах не учитывался регистр. Я видел некоторые фрагменты обходных путей для этого и хотел спросить, есть ли простой способ сделать это? Если мне нужно переопределить некоторые методы из TaggableManager, посоветуйте, пожалуйста, как мне это сделать?

Спасибо заранее, Аршавский Александр.

Ответы [ 3 ]

3 голосов
/ 27 ноября 2012

Я уверен, что вы уже нашли решение :) Хотя я поставлю ответ, так как кто-то может ударить его при поиске -

Использовать https://github.com/shacker/django-taggit версию django-taggit.

Позволяет настроить TAGGIT_FORCE_LOWERCASE = True

Также позволяет фильтровать стоп-слова.

1 голос
/ 05 февраля 2016

Последние версии django-taggit поддерживают настройку TAGGIT_CASE_INSENSITIVE, которая должна вести себя так, как вы описываете.

0 голосов
/ 20 июня 2011

Я использовал этот фрагмент для аналогичной проблемы.Копия кода (перепечатана для потомков):

from django.db.models import Manager
from django.db.models.query import QuerySet

class CaseInsensitiveQuerySet(QuerySet):
    def _filter_or_exclude(self, mapper, *args, **kwargs):
        # 'name' is a field in your Model whose lookups you want case-insensitive by default
        if 'name' in kwargs:
            kwargs['name__iexact'] = kwargs['name']
            del kwargs['name']
        return super(CaseInsensitiveQuerySet, self)._filter_or_exclude(mapper, *args, **kwargs)

# custom manager that overrides the initial query set
class TagManager(Manager):
    def get_query_set(self):
        return CaseInsensitiveQuerySet(self.model)

# and the model itself
class Tag(models.Model):
    name = models.CharField(maxlength=50, unique=True, db_index=True)

    objects = TagManager()

    def __str__(self):
        return self.name
# now...
>>> tag = Tag(name='test')
>>> tag.save()
>>> Tag.objects.get(name='TEST')
<Tag: test>

По сути, вы переопределяете исходный набор запросов, чтобы все наборы запросов учитывали нечувствительность к регистру.

...