【问题标题】:django: django-taggit usagedjango: django-taggit 用法
【发布时间】:2011-10-30 09:12:49
【问题描述】:

这可能是一个愚蠢的问题,但我下载了Django-taggit 并且文档提到在我要关联的每个模型中添加一个TaggableManagermanager。这很好,但是来自我“pip-ed”的外部应用程序的模型呢?在这些模型中使用 taggit 的最佳方式是什么?

【问题讨论】:

    标签: django django-tagging django-taggit


    【解决方案1】:

    您可以在自己的应用程序中对外部应用程序中的模型进行子类化,这可能是一个合理的解决方案,即

    from someapp.models import SomeModel
    from taggit.managers import TaggableManager
    
    class SomeModelTagged(SomeModel):
        tags = TaggableManager()
    

    然后在您从外部应用程序使用 SomeModel 的视图中,您将不得不使用您的新模型。

    【讨论】:

      【解决方案2】:

      您可以使用 taggit 从任何外部应用程序轻松注册模型。假设模型的名称是 Item。

      from taggit.managers import TaggableManager
      from external_app.models import Item
      
      Item.add_to_class('tags', TaggableManager())
      

      然后你就可以像往常一样使用taggit了。

      i = Item.objects.get(pk=1)
      i.tags.add("wassup")
      i.tags.all()
      

      【讨论】:

        【解决方案3】:

        您可以让 pip 使用 (-e VCS+REPOS_URL[@REV]#egg=PACKAGE) 安装可编辑版本并自己添加 django-taggable 集成。

        【讨论】:

        • 我猜他想避免这种情况。使用 django-tagging 可以注册模型,但我没有测试是否可以在要注册的应用程序之外进行注册。
        猜你喜欢
        • 2019-03-12
        • 1970-01-01
        • 2011-07-18
        • 1970-01-01
        • 2012-10-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多