如何在 Django 中过滤不同模型中的数据?

how to filter data in different models in django?

我的模型

class Player(TimeStampedModel):
    name = models.CharField(max_length=200)
    email = models.CharField(max_length=200)
    email_verified = models.BooleanField(default=False, blank=True)
    phone = models.CharField(max_length=200)
    phone_verified = models.BooleanField(default=False, blank=True)
    company_id = models.ImageField(upload_to=get_file_path_id_card, null=True, 
    max_length=255)
    company_id_verified = models.BooleanField(default=False, blank=True)
    team = models.ForeignKey(Team, related_name='player', on_delete=models.DO_NOTHING)

    def __str__(self):
        return self.name 

这是我的模型,如何在多个模型中过滤数据?

您可以使用查询集 filter by modal object's field

您也可以使用它来过滤 relationships on models

在您的示例中,您可以过滤所有具有武器强度 > 10 的角色的玩家条目 Player.objects.filter(character__weapon__strength__gt=10)

为了便于阅读,您也可以将它们分成 3 个变量。

player_q = Player.objects.filter(character__isnull=False)
ch_q = player_q.filter(weapon__isnull=False)
wpn_dmg = ch_q.filter(strength__gt=10)

请注意过滤器是惰性的,因此不会 return 实际模型实例 untill they're evaluated。我认为在这种情况下 gt returns 是一个实例。

This documentation 遍历您可以使用 QuerySet 对象方法 filter(), get(),exclude()

执行的所有字段集查找