问题描述
我想使用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))