根据文档的 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/