Django-通过相关字段通过另一个查询集过滤查询集

时间:2020-05-28 18:14:09

标签: python django django-queryset

假设我有以下两个模型,并且我想获取所有具有平台字段与某个值匹配的游戏的开发人员的查询集。我该怎么办?

class Developer(models.Model):
    name = models.CharField(max_length=100, default="Unknown")

class Game(models.Model):
    name = models.CharField(max_length=300)
    developer = models.ForeignKey(Developer, related_name="games", on_delete=models.CASCADE)
    platform = models.CharField(max_length=40)

我尝试了一些方法,但似乎无法找出任何可行的方法。

1 个答案:

答案 0 :(得分:1)

您可以通过以下方式对此进行查询:

Developer.objects.filter(games__platform='name-of-platform').distinct()

如果没有.distinct() [Django-doc]相同开发人员将在同一平台上开发多个Game的情况下返回多次。如果那不是问题,您当然可以省略.distinct()