过滤django中的两个外键关系

时间:2012-02-01 16:36:29

标签: 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)

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

3 个答案:

答案 0 :(得分:7)

你可以这样做:

Actor.objects.filter(name="actorname",film__name="filmname", film__studio__name="studioname")

可以找到文档here

答案 1 :(得分:5)

继续链接__以保持遍历:

Actor.objects.filter(film__studio__name='Something')

答案 2 :(得分:3)

中的某些内容

Actor.objects.filter(name='foo', film__name='bar', film__studio__name='baz')