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

发布于 2024-11-10 03:09:47 字数 118 浏览 0 评论 0原文

我正在使用 django-taggit。我希望所有标签都小写,还设置标签编号的范围(比如在 1 到 5 之间,就像 stackoverflow 一样)。有什么办法可以用 django-taggit 轻松做到这一点吗?谢谢!

I'm using django-taggit. I'd like to have all tags in lowercase, also set a range for tag numbers (say between 1 and 5, just like stackoverflow). Is there any way to do it easily with django-taggit? Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

粉红×色少女 2024-11-17 03:09:47

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

You might want to check out this branch. https://github.com/shacker/django-taggit it has a FORCE_LOWERCASE setting.

梦里°也失望 2024-11-17 03:09:47

使用 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 方法中对标签编号强制实施范围限制。

It's pretty easy to do with django-taggit. Subclass TagBase and enforce the lowercase constraint in the save method. The rest is boiler point so TaggableManager can use your subclass.

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)

You can also enforce a range limit for tag numbers in the save method.

热情消退 2024-11-17 03:09:47

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

TAGGIT_CASE_INSENSITIVE = True

如果你希望 django-taggit 在查找时不区分大小写
现有标签,您必须设置 TAGGIT_CASE_INSENSITIVE 设置
为 True(默认为 False):

TAGGIT_CASE_INSENSITIVE = True

来源:https://django -taggit.readthedocs.io/en/latest/getting_started.html

Old question but now there is the following setting to deal with case insensitive tags:

TAGGIT_CASE_INSENSITIVE = True

If you want django-taggit to be CASE-INSENSITIVE when looking up
existing tags, you’ll have to set the TAGGIT_CASE_INSENSITIVE setting
to True (False by default):

TAGGIT_CASE_INSENSITIVE = True

Source: https://django-taggit.readthedocs.io/en/latest/getting_started.html

烧了回忆取暖 2024-11-17 03:09:47

另一种选择是猴子修补 Tag.save 方法。这样,您只需添加所需的功能,而无需重复 django-taggit 代码。

from taggit.models import Tag

tag_save_original = Tag.save

def tag_save_pathed(self, *args, **kwargs):
    self.name = self.name.lower()
    return tag_save_original(self, *args, **kwargs)

Tag.save = tag_save_pathed

Another option is to monkey-patch Tag.save method. This way you only add the needed funcionality without duplicating django-taggit code.

from taggit.models import Tag

tag_save_original = Tag.save

def tag_save_pathed(self, *args, **kwargs):
    self.name = self.name.lower()
    return tag_save_original(self, *args, **kwargs)

Tag.save = tag_save_pathed
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文