【发布时间】:2011-09-02 22:09:08
【问题描述】:
我正在使用 django-taggit。我想让所有标签都小写,还设置标签号的范围(比如在 1 到 5 之间,就像 stackoverflow 一样)。有什么方法可以用 django-taggit 轻松完成吗?谢谢!
【问题讨论】:
标签: django tags django-taggit
我正在使用 django-taggit。我想让所有标签都小写,还设置标签号的范围(比如在 1 到 5 之间,就像 stackoverflow 一样)。有什么方法可以用 django-taggit 轻松完成吗?谢谢!
【问题讨论】:
标签: django tags django-taggit
老问题,但现在有以下设置来处理不区分大小写的标签:
TAGGIT_CASE_INSENSITIVE = True
如果您希望 django-taggit 在查找时不区分大小写 现有标签,您必须设置 TAGGIT_CASE_INSENSITIVE 设置 为真(默认为假):
TAGGIT_CASE_INSENSITIVE = 真
来源:https://django-taggit.readthedocs.io/en/latest/getting_started.html
【讨论】:
/settings/base.py)
settings.py 还是 models.py?
使用 django-taggit 很容易做到。子类 TagBase 并在 save 方法中强制使用小写约束。剩下的就是锅炉点,所以 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)
您还可以在 save 方法中对标记号强制执行范围限制。
【讨论】:
你可能想看看这个分支。 https://github.com/shacker/django-taggit 它有一个 FORCE_LOWERCASE 设置。
【讨论】: