如何限制django-taggit只接受小写单词?

时间:2011-05-26 20:14:10

标签: django tags django-taggit

我正在使用django-taggit。我希望所有标签都是小写的,也为标签号设置一个范围(比如介于1和5之间,就像stackoverflow一样)。有没有办法用django-taggit轻松完成?谢谢!

3 个答案:

答案 0 :(得分:3)

您可能想查看此分支。 https://github.com/shacker/django-taggit它有一个FORCE_LOWERCASE设置。

答案 1 :(得分:3)

使用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)

您还可以在保存方法中强制执行标记号的范围限制。

答案 2 :(得分:2)

旧问题,但现在有以下设置来处理不区分大小写的标记:

TAGGIT_CASE_INSENSITIVE = True