from django.db.models import Q,F
aQ = (Q(net_number__icontains=''))
demo.objects.filter(aQ).order_by(F('test_time').asc(nulls_last=True))[start:end].values()
其中test_time即为指定字段,asc为正序 传入参数nulls_last为True,查询结果即为空值在后。
其效果等同于:select * from demo where net_number like '%%' order by test_time is NULL, test_time;
select * from demo where net_number like '%%' order by if(isnull(test_time), 1, 0), test_time;
其中isnull函数中
将null强制放在前面:if(isnull(test_time), 0, 1)
asc默认是空值在前的,在desc默认是空值在后得,
如有需求,可以使用 0,1 将其放在前面;1,0放在后面