Django ORM查询嵌套模型

问题描述

我想使用Django ORM来过滤db中的一些记录, 我有一个名为User的模型,其中包含一个字段profile,这是另一个模型, 当我执行以下操作时,我得到所有拥有配置文件用户

users = User.objects.filter(Q(profile__isnull=False))

profile一个字段age 我要删除个人资料且年龄> 30的所有用户。 因此,我通过个人资料遍历了所有用户,然后检查他们的年龄是否大于30。

for user in  users:
    if user.profile.age>30:
          user.delete()

是否可以直接在查询中使用user.profile.age>30

解决方法

我通过如下组合Q中的Django个对象解决了这个问题:

User.objects.filter(Q(profile__isnull=False) & Q(profile__age__gt=30))