在 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")
我有一组看起来像这样的 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")