【发布时间】:2011-10-30 09:12:49
【问题描述】:
这可能是一个愚蠢的问题,但我下载了Django-taggit 并且文档提到在我要关联的每个模型中添加一个TaggableManagermanager。这很好,但是来自我“pip-ed”的外部应用程序的模型呢?在这些模型中使用 taggit 的最佳方式是什么?
【问题讨论】:
标签: django django-tagging django-taggit
这可能是一个愚蠢的问题,但我下载了Django-taggit 并且文档提到在我要关联的每个模型中添加一个TaggableManagermanager。这很好,但是来自我“pip-ed”的外部应用程序的模型呢?在这些模型中使用 taggit 的最佳方式是什么?
【问题讨论】:
标签: django django-tagging django-taggit
您可以在自己的应用程序中对外部应用程序中的模型进行子类化,这可能是一个合理的解决方案,即
from someapp.models import SomeModel
from taggit.managers import TaggableManager
class SomeModelTagged(SomeModel):
tags = TaggableManager()
然后在您从外部应用程序使用 SomeModel 的视图中,您将不得不使用您的新模型。
【讨论】:
您可以使用 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()
【讨论】:
您可以让 pip 使用 (-e VCS+REPOS_URL[@REV]#egg=PACKAGE) 安装可编辑版本并自己添加 django-taggable 集成。
【讨论】: