【发布时间】:2025-12-20 15:00:11
【问题描述】:
我的 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 的具有特定格式的人?
谢谢!
【问题讨论】:
-
仅供参考,如果您想 OR 两个查询集,我相信您在查询集之间使用
|。不确定这对 OP 有多大帮助,但应该可以帮助到这里的其他人。
标签: django many-to-many django-orm