django - 与简单的 ManyToManyField() 标记实现相比,Django-Taggit 有什么好处?

标签 django tags tagging

根据文档的 API 似乎可以通过一个简单的 ManyToManyField 实现......我错过了什么?

来自 Django-Taggit 文档的示例:

class Food(models.Model):
    # ... fields here

    tags = TaggableManager()

然后你可以像这样使用 API::
>>> apple = Food.objects.create(name="apple")
>>> apple.tags.add("red", "green", "delicious")
>>> apple.tags.all()
[<Tag: red>, <Tag: green>, <Tag: delicious>]
>>> apple.tags.remove("green")
>>> apple.tags.all()
[<Tag: red>, <Tag: delicious>]
>>> Food.objects.filter(tags__name__in=["red"])
[<Food: apple>, <Food: cherry>]

最佳答案

真正的优势不在于找到一个对象的标签,而是一个标签的对象。具体来说,如果您有多种类型的可以标记的对象,请想象:

class Food(models.Model):
   tags = models.ManyToManyField(Tag)

class Wine(models.Model):
   tags = models.ManyToManyField(Tag)

现在找到所有标记为“紫色”的对象实例。 Taggit 使这样做变得容易得多。

关于django - 与简单的 ManyToManyField() 标记实现相比,Django-Taggit 有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4180251/

相关文章:

java - 如何使用Android Studio实现自动建议UI?

Django ManyToManyField 错误

python - Django:ImageField 需要文件路径还是实际的图像对象?

css - 嵌套 <article> 和 <h1> 标签?

Django 模板 : how to show dict whose key has a dot in it? d ['key.name' ]

mysql - 按多个标签过滤帖子以返回具有所有这些标签的帖子,性能良好

django - docker容器已构建并正在运行但无法正常工作

python - 如何将 django call_command 的输出保存到变量或文件中

performance - 在性能(和分类)方面,分层数据与相关数据的优缺点是什么?

python - Pygame 不播放带有诱变剂标记的 mp3 文件