首页 > 解决方案 > Django - 通过相关字段由另一个查询集过滤查询集

问题描述

假设我有以下两个模型,并且我想获取所有开发者的查询集,这些开发者拥有平台字段匹配某个值的游戏。我该怎么做呢?

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)

我尝试了一些方法,但似乎无法弄清楚任何可行的方法。

标签: pythondjangodjango-queryset

解决方案


您可以通过以下方式查询:

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

如果没有.distinct()[Django-doc],如果他们为同一平台开发了多个 s,则会多次返回同一开发者。Game如果这不是问题,您当然可以省略.distinct().


推荐阅读