过滤django中的两个外键关系

Ed.*_*Ed. 3 django

我有三个型号:

class Studio(models.Model):
    name = models.CharField("Studio", max_length=30, unique=True)

class Film(models.Model):
    studio = models.ForeignKey(Studio, verbose_name="Studio")
    name = models.CharField("Film Name", max_length=30, unique=True)

class Actor(models.Model):
    film = models.ForeignKey(Film, verbose_name="Film")
    name = models.CharField("Name", max_length=30, unique=True)
Run Code Online (Sandbox Code Playgroud)

我想查询Actor以查看数据库中是否存在Studio,Film和Actor的特定组合.我知道如何检查Actor是否存在.我知道如何过滤演员姓名和电影名称.是否有单行方法来查询Actor名称和电影名称AND St​​udio名称(两次遍历外键链)?

Ald*_*und 7

你可以这样做:

Actor.objects.filter(name="actorname",film__name="filmname", film__studio__name="studioname")
Run Code Online (Sandbox Code Playgroud)

文档可以在这里找到


Chr*_*att 6

只需保持链接__以保持遍历:

Actor.objects.filter(film__studio__name='Something')
Run Code Online (Sandbox Code Playgroud)