我的 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 的特定格式的用户?
谢谢你!
现在,我想过滤具有特定格式的所有视频,并且
该格式的状态代码是 10(可供使用)。我怎样才能做到这一点?
(假设f是格式)
您发布的代码正是您想要的:
Video.objects.filter(media__formats=f, media__mediaformat__status=10)
这记录在the filter()文档 https://docs.djangoproject.com/en/dev/ref/models/querysets/#filter:
多个参数在底层 SQL 中通过 AND 连接
陈述。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)