ale*_*rsh 7 django django-taggit
我在我的模型中添加了tags = TaggableManager(blank = True),但我希望我的标签不区分大小写.为此我看到了一些工作片段,想问一下是否有一种简单的方法可以做到这一点?如果我必须覆盖TaggableManager中的某些方法,请告知我该怎么做?
在此先感谢Arshavski Alexander.
Lau*_*Mat -2
我已经使用这个片段来解决类似的问题。代码副本(为后代转载):
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>
Run Code Online (Sandbox Code Playgroud)
基本上,您覆盖初始查询集,以便所有查询集都考虑不区分大小写。
| 归档时间: |
|
| 查看次数: |
1635 次 |
| 最近记录: |