我在我的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)
不过,这将返回同时匹配这些假设所有视频:
- a)包含该特定格式,并且
- b)包含具有状态10的任何格式
我该如何筛选那些在状态码10中具有特定格式的人?
谢谢!
仅供参考如果您想要或两个查询集,我相信您在查询集之间使用'|'。不知道这对OP有多大帮助,但它应该有助于其他人来到这里。 – Pureferret 2015-02-03 14:14:06