Какие преимущества дает Django-Taggit по сравнению с простой реализацией тегов ManyToManyField ()? - PullRequest
5 голосов
/ 15 ноября 2010

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>]

1 Ответ

2 голосов
/ 15 ноября 2010

Реальное преимущество заключается не в поиске тегов объекта, а скорее объектов для тега. В частности, если у вас есть несколько типов объектов, которые можно пометить, представьте:

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

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

Теперь найдите мне все экземпляры объектов, помеченных как "фиолетовые". Taggit делает это намного проще.

...