태그에 TaggableManager (blank = True) 태그를 추가했지만 모델에서 대소 문자를 구분하지 않길 바랍니다. 나는 이것을 해결하기위한 몇 가지 발췌본을 보았고 그것을 할 수있는 쉬운 방법이 있는지 물어보고 싶었습니다. TaggableManager에서 일부 메서드를 재정의해야 할 경우 어떻게해야합니까?django-taggit으로 대소 문자를 구별하지 않는 태그 만들기
미리 감사드립니다. Arshavski Alexander.
태그에 TaggableManager (blank = True) 태그를 추가했지만 모델에서 대소 문자를 구분하지 않길 바랍니다. 나는 이것을 해결하기위한 몇 가지 발췌본을 보았고 그것을 할 수있는 쉬운 방법이 있는지 물어보고 싶었습니다. TaggableManager에서 일부 메서드를 재정의해야 할 경우 어떻게해야합니까?django-taggit으로 대소 문자를 구별하지 않는 태그 만들기
미리 감사드립니다. Arshavski Alexander.
비슷한 문제로 this snippet을 사용했습니다. (후손에 대한 재판) 코드의 복사본 : 모든 검색어 세트 계정에 소문자 구분을하도록
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>
기본적으로, 초기의 검색어를 우선합니다. 장고 - taggit의
난 당신이 지금 해결책을 알아 낸 : 사람이 동안의 검색을 칠 하듯이 내가 대답을 넣어 것입니다하지만 확신합니다.
그것은 TAGGIT_FORCE_LOWERCASE =
사실 그것은 또한 당신이 중지 단어를 필터링 할 수 있습니다 구성 할 수 있습니다.
django-taggit의 최신 버전은 설명하는대로 동작해야하는 TAGGIT_CASE_INSENSITIVE
설정을 지원합니다.
동일한 답변을 여러 번 게시하지 마십시오. 질문이 중복 된 경우 해당 질문을 그대로 사용하십시오. – Mat
이것은 실제로 질문에 대답하지 않습니다. 문제는 django-taggit입니다. 귀하의 제안은 기본적으로 "자신 만의 태깅 앱 작성"입니다. –