I tienen los siguientes modelos en mi proyecto Django:Django filtrar a través de varios campos de una tabla de intermediario muchos-a-muchos
class Video(models.Model):
media = models.ForeignKey(Media)
class Media(models.Model):
title = models.CharField(max_length=255)
formats = models.ManyToManyField(Format,through='MediaFormat',related_name='media',blank=True)
class Format(models.Model):
title = models.CharField(max_length=50)
class MediaFormat(models.Model):
status = models.IntegerField()
format = models.ForeignKey(Format)
media = models.ForeignKey(Media)
Ahora, quiero filtrar todos los videos que tienen un formato específico, y de la el código de estado para ese formato es 10 (listo para usar). ¿Cómo puedo hacer eso? (suponiendo que f es el formato):
f = Format.objects.get(pk=3)
Estoy tentado a usar:
Video.objects.filter(media__formats=f, media__mediaformat__status=10)
Pero entonces, que devolvería todos los vídeos que coinciden estos dos supuestos:
- a) contienen ese formato específico, y
- b) contienen cualquier formato con el estado de 10
¿Cómo se supone que debo filtrar solo a aquellos que tienen ese formato específico en un código de estado de 10?
gracias!
FYI si desea O dos conjuntos de consultas, creo que usa '|' entre los conjuntos de consultas. No estoy seguro de lo útil que esto es para OP, pero debería ayudar a otros que vienen aquí. – Pureferret