【问题标题】:How can I limit django-taggit to accept only lowercase words?如何限制 django-taggit 只接受小写单词?
【发布时间】:2011-09-02 22:09:08
【问题描述】:

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

【问题讨论】:

    标签: django tags django-taggit


    【解决方案1】:

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

    TAGGIT_CASE_INSENSITIVE = True
    

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

    TAGGIT_CASE_INSENSITIVE = 真

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

    【讨论】:

    • 我应该把那行放在哪里?
    • @SMahdiS 在你的 Django 设置文件中(例如/settings/base.py
    • 我真的没有找到那个文件。我应该在哪里寻找它?我在 Pycharm 2016 中使用 python 2.7.3。你不是说 Django 项目中的 settings.py 吗?请给我一个链接以获取更多信息。
    • 除非您专门创建,否则 Django 项目中没有这样的文件夹或文件。但是在一个普通的 Django 项目中,我应该将它放入 settings.py 还是 models.py
    【解决方案2】:

    使用 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 方法中对标记号强制执行范围限制。

    【讨论】:

    • 如果你使用这种方法,你可能还想从 django-admin 中注销 Taggit 自己的 Tag,并在 django-admin 中注册你的 LowerCaseTag 模型。如果您使用 django-taggit-autosuggest,您还需要使用自定义 TAGGIT_AUTOSUGGEST_MODELS 设置。这对我来说并不是很明显。
    【解决方案3】:

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

    【讨论】:

    • 它只在 django-taggit==0.9.4 中工作,所以如果你安装它,它工作得很好。我第一次通过 easy_install 安装它并得到 (VERSION = (0, 10, 0, 'alpha', 1)) 并且它没有 TAGGIT_FORCE_LOWERCASE = True TAGGIT_STOPWORDS = [u'a', u'an', u'and ', u'be', u'from', u'of'] 选项。 git clone github.com/shacker/django-taggit.git 给我 0.9.4 版本。
    猜你喜欢
    • 2011-07-18
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 2011-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多