gpt4 book ai didi

Django过滤多对多中间表中的多个字段

转载 作者:行者123 更新时间:2023-12-03 23:23:50 25 4
gpt4 key购买 nike

我的 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 的特定格式的人?

    谢谢你!

    最佳答案

    Now, I want to filter all videos which have a specific format, AND thestatus code for that format is 10 (ready to use). How can I do that?(assuming that f is the format)


    您发布的代码正是您想要的:
    Video.objects.filter(media__formats=f, media__mediaformat__status=10)
    这记录在 the filter() documentation 中:

    Multiple parameters are joined via AND in the underlying SQLstatement.

    关于Django过滤多对多中间表中的多个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5489618/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com