Аннотировать теги django-taggit, прикрепленные к определенному объекту

У меня есть объект, помеченный с помощью django-taggit. Если бы я хотел получить список всех тегов, прикрепленных к этому объекту, я бы следовал документации следующим образом:

apple = Food.objects.create(name="apple")
apple.tags.add("red", "green", "delicious")
apple.tags.all()

Если бы я хотел узнать, сколько объектов Food прикреплено к каждому существующему тегу, я бы сделал следующее:

Tag.objects.all().annotate(food_count=Count('food'))

Если бы я хотел получить количество всех продуктов питания, прикрепленных только к тегам, прикрепленным к «яблоку», я мог бы сделать следующее:

apple = Food.objects.create(name="apple")
apple.tags.add("red", "green", "delicious")
apple.tags.all().annotate(food_count=Count('food'))

Итак, мой вопрос. Допустим, в моей модели Food есть поле с флагом:

class Food(models.Model):
    name = models.CharField(max_length=200, unique = True)
    healthy_flag = models.BooleanField(default=False)

Как я могу получить количество всех здоровых продуктов, прикрепленных только к тегам, прикрепленным к «яблоку» (где здоровая пища обозначается здоровым_флагом = 1) ? По сути, для каждого тега «яблоко», сколько здоровых продуктов имеют этот тег?


person Ed.    schedule 23.08.2012    source источник


Ответы (1)


Ответ найден здесь.

apple.tags.all().annotate(food_count=Count('food')).filter(food__health_flag = True)
person Ed.    schedule 23.08.2012