Django фильтрует несколько полей в промежуточной таблице «многие ко многим»

В моем проекте django есть следующие модели:

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)

Теперь я хочу отфильтровать все видео, которые имеют определенный формат, И код состояния для этого формата - 10 (готов к использованию). Как я могу это сделать? (при условии, что f является форматом):

f = Format.objects.get(pk=3)

Я испытываю желание использовать:

Video.objects.filter(media__formats=f, media__mediaformat__status=10)

Но тогда это вернет все видео, которые соответствуют обоим из этих предположений:

  • а) содержит этот конкретный формат и
  • б) содержать любой формат со статусом 10

Как я должен фильтровать только тех, кто имеет этот определенный формат с кодом состояния 10?

спасибо!

12 голосов | спросил user684334 30 MarpmWed, 30 Mar 2011 21:06:47 +04002011-03-30T21:06:47+04:0009 2011, 21:06:47

0 ответов


Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132