【问题标题】:Filtering on a foreign key of a many to many field in django?在django中过滤多对多字段的外键?
【发布时间】:2023-03-16 21:26:01
【问题描述】:

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

这会给我一个查询集,其中包含带有该包的配置文件,但我需要将它与其他过滤器结合起来,我希望配置文件模型是顶层。

【问题讨论】:

    标签: python django django-queryset intersection


    【解决方案1】:

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

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

    【讨论】:

    • 你成功了,谢谢。语法把我绊倒了
    猜你喜欢
    • 2018-06-07
    • 2015-07-18
    • 1970-01-01
    • 2020-03-20
    • 2014-08-24
    • 2012-04-28
    • 2012-08-23
    • 1970-01-01
    • 2011-07-26
    相关资源
    最近更新 更多