Tengo un objeto que está etiquetado usando django-taggit. Si quisiera obtener una lista de todas las etiquetas adjuntas a este objeto, seguiría la documentación así:
apple = Food.objects.create(name="apple")
apple.tags.add("red", "green", "delicious")
apple.tags.all()
Si quisiera saber cuántos objetos de Alimentos se adjuntaron a cada etiqueta existente, haría lo siguiente:
Tag.objects.all().annotate(food_count=Count("food"))
Si quisiera obtener un recuento de todos los alimentos adjuntos solamente A las etiquetas que están adjuntas a "Apple", podría hacer lo siguiente:
apple = Food.objects.create(name="apple")
apple.tags.add("red", "green", "delicious")
apple.tags.all().annotate(food_count=Count("food"))
Ok, entonces para mi pregunta. Digamos que mi modelo de comida tiene un campo con una bandera:
class Food(models.Model):
name = models.CharField(max_length=200, unique = True)
healthy_flag = models.BooleanField(default=False)
¿Cómo puedo obtener un recuento de todos los sano alimentos adjuntos solamente a las etiquetas que se adjuntan a "manzana" (donde un alimento saludable se denota por healthy_flag = 1)? Básicamente, para cada etiqueta de "manzana", ¿cuántos alimentos saludables comparten esa etiqueta?
Respuestas
1 para la respuesta № 1Encontré la respuesta aquí.
apple.tags.all().annotate(food_count=Count("food")).filter(food__health_flag = True)