使用orm查询,得到的结果类型是QuerySet,这种类型drf可以进行下一步处理, 使用原生sql查询,例如
UserInfo.objects.raw(sql,(params))
得到的结果类型是RawQuerySet,这种类型drf不能进行下一步处理, 那么问题来了,我既想要用原生sql查询,又要使用drf处理结果,怎么办? 二者结合咯。
看下图代码,select编写复杂的过滤条件
select = {
'read_flag':'exists (select * from user_pro_notice where user_id = %s and msg_id=pro_msg.id) '
}
query = ProMsg.objects.filter(type=_type,project_id=project_id).extra(select=select,select_params=(user_id,)).order_by('-update_time')