Django - 通过相关字段对另一个查询集进行过滤。

问题描述 投票:0回答:1

假设我有下面的两个模型,我想得到一个所有开发者的查询集,其中有平台字段符合某个值的游戏。我将如何去做呢?

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)

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

python django django-queryset
1个回答
1
投票

你可以用以下方法来查询。

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

不使用... .distinct() [Django-doc]జజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజజ 一样 开发者将被多次返回,如果他们开发了多个 Game同一个平台的产品。如果这不是问题,您当然可以省去 .distinct().

© www.soinside.com 2019 - 2024. All rights reserved.