select * from user inner join (select login_id from account where created_time >='xxx') t1 on t1.login_id = user.id; - 如果能 构造一个 subquery ,然后可以 User.objects.filter(id=Subquery.c.login_id)
- 现在 django 不支持 subquery.c.field 这种方式。

select * from user inner join (select login_id from account where created_time >='xxx') t1 on t1.login_id = user.id; 1 krixaar Feb 17, 2022 django 不能 id__in 么 |
2 Aganzo Feb 17, 2022 user_ids = Account.objects.filter(created_time__gt='xxx').values_list('login_id',flat=True).distinct() User.objects.filter(id__in=user_ids) 应该是这个意思吧,queryset 会自动以子查询形式嵌套 |
3 riiygh Feb 17, 2022 没有看到你的 model 。假设 account 有外键 user ,可以这样试试:User.objects.filter(account__created_time__gte='xxx').all() |
4 wuwukai007 OP |
5 krixaar Feb 17, 2022 @wuwukai007 #4 2 楼写法等同于 select * from user where id in (select login_id from account where created_time >= 'xxx') |