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 só 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 só 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 № 1Encontrei a resposta Aqui.
apple.tags.all().annotate(food_count=Count("food")).filter(food__health_flag = True)