在 Django 中过滤多对多字段的外键?

Filtering on a foreign key of a many to many field in django?

我有一组看起来像这样的 django 模型:

class Profile(models.Model):
    attributes

class Package(AuditBaseModel):
    name = models.CharField(max_length=128)
    active = models.BooleanField(default=True)

class ProfilePackage(AuditBaseModel):
    profile = models.ForeignKey(Profile, related_name="profile_packages", on_delete=models.CASCADE)
    package = models.ForeignKey(Package, related_name="profile_packages", on_delete=models.PROTECT)
    active = models.BooleanField(default=True)

我需要的是从配置文件中过滤包名称的方法。我知道我可以做类似

的事情
ProfilePackage.objects.filter(active=True, package__name="Professional").select_related("profile")

这将为我提供一个查询集,其中包含该包的配置文件,但我需要将其与其他过滤器结合使用,我更希望配置文件模型成为顶级。

看看你的模型,这应该很容易。

Profile.objects.filter(profile_packages__active=True, profile_packages__package__name="Professional")