/ / Anotação de tags django-taggit anexadas a objetos específicos - mysql, django, django-queryset, django-taggit

Anote as tags django-taggit anexadas a um objeto específico - mysql, django, django-queryset, django-taggit

Eu tenho um objeto que é marcado usando django-taggit. Se eu quisesse obter uma lista de todas as tags anexadas a este objeto, eu seguiria a documentação da seguinte forma:

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

Se eu quisesse saber quantos objetos Food estavam anexados a cada tag existente, eu faria o seguinte:

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

Se eu quisesse contar todos os itens de comida em anexo para as tags que estão anexadas a "apple", eu poderia fazer o seguinte:

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

Ok, então para minha pergunta. Vamos dizer que meu modelo de comida tem um campo com uma bandeira:

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

Como posso obter uma contagem de todos os saudável alimentos ligados para as tags que são anexadas a "apple" (onde um alimento saudável é denotado por healthy_flag = 1)? Basicamente, para cada tag "apple", quantos alimentos saudáveis ​​compartilham essa tag?

Respostas:

1 para resposta № 1

Encontrei a resposta Aqui.

apple.tags.all().annotate(food_count=Count("food")).filter(food__health_flag = True)