This commit is contained in:
caoqianming 2019-10-08 21:29:55 +08:00
parent 783a0cb6ce
commit 21be18b1a4
6 changed files with 145 additions and 70 deletions

View File

@ -0,0 +1,29 @@
# Generated by Django 2.1.5 on 2019-10-08 16:04
import django.contrib.postgres.fields
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('safesite', '0272_auto_20190925_1657'),
]
operations = [
# migrations.AddField(
# model_name='area',
# name='qrcode',
# field=models.CharField(blank=True, max_length=200, null=True),
# ),
migrations.AddField(
model_name='operation',
name='todousers',
field=django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), blank=True, null=True, size=None),
),
migrations.AddField(
model_name='operationspjd',
name='sprs',
field=django.contrib.postgres.fields.ArrayField(base_field=models.IntegerField(), blank=True, null=True, size=None),
),
]

View File

@ -1,7 +1,7 @@
from django.db import models from django.db import models
import uuid import uuid
import django.utils.timezone as timezone import django.utils.timezone as timezone
from django.contrib.postgres.fields import JSONField from django.contrib.postgres.fields import JSONField,ArrayField
import jwt import jwt
import datetime import datetime
# Create your models here. # Create your models here.
@ -466,6 +466,7 @@ class Operation(models.Model):#作业表
zyzt = JSONField() zyzt = JSONField()
fxcs = models.CharField(max_length=200) fxcs = models.CharField(max_length=200)
todouser = models.ForeignKey(User,related_name='zyclr',on_delete=models.CASCADE,null=True,blank=True) todouser = models.ForeignKey(User,related_name='zyclr',on_delete=models.CASCADE,null=True,blank=True)
todousers = ArrayField(models.IntegerField(), blank=True,null=True)
usecomp = models.ForeignKey(Partment,on_delete=models.CASCADE,null=True,blank=True,default=1) usecomp = models.ForeignKey(Partment,on_delete=models.CASCADE,null=True,blank=True,default=1)
class Fxcs(models.Model):#作业分析措施 class Fxcs(models.Model):#作业分析措施
@ -508,12 +509,13 @@ class Operzyry(models.Model):#作业确认人
modifytime = models.DateTimeField(auto_now = True) modifytime = models.DateTimeField(auto_now = True)
submittime = models.DateTimeField(default = timezone.now) submittime = models.DateTimeField(default = timezone.now)
class Operationspjd(models.Model):#作业审批节点 class Operationspjd(models.Model):#作业审批节点配置
id = models.AutoField(primary_key=True) id = models.AutoField(primary_key=True)
zylx = models.ForeignKey(Dickey, on_delete=models.CASCADE,null=True,blank=True) zylx = models.ForeignKey(Dickey, on_delete=models.CASCADE,null=True,blank=True)
jdmc = models.CharField(max_length=100) jdmc = models.CharField(max_length=100)
spbm = models.ForeignKey(Partment,related_name='spbm',on_delete=models.CASCADE,null=True,blank=True)#审批部门 spbm = models.ForeignKey(Partment,related_name='spbm',on_delete=models.CASCADE,null=True,blank=True)#审批部门
spr = models.ForeignKey(User,related_name='spr',on_delete=models.CASCADE,null=True,blank=True)#审批部门 spr = models.ForeignKey(User,related_name='spr',on_delete=models.CASCADE,null=True,blank=True)#审批部门
sprs = ArrayField(models.IntegerField(), blank=True,null=True)
submittime = models.DateTimeField(u'创建时间',default = timezone.now) submittime = models.DateTimeField(u'创建时间',default = timezone.now)
modifytime = models.DateTimeField(auto_now = True) modifytime = models.DateTimeField(auto_now = True)
usecomp = models.ForeignKey(Partment,on_delete=models.CASCADE,null=True,blank=True) usecomp = models.ForeignKey(Partment,on_delete=models.CASCADE,null=True,blank=True)

View File

@ -13,7 +13,7 @@
required=true /> required=true />
</div> </div>
<div style="margin-bottom:5px"> <div style="margin-bottom:5px">
<input id="spr" class="easyui-combobox" name="spr" style="width:480px;" editable="false" data-options="label:'审批人'" <input id="spr" class="easyui-combobox" name="spr" style="width:480px;" editable="false" data-options="label:'审批人',multiple:true"
required=true /> required=true />
</div> </div>
</form> </form>
@ -22,9 +22,13 @@
<script> <script>
$('#spbm').combotree({ url: 'parthandle?a=tree', loadFilter: function(rows){ $('#spbm').combotree({ url: 'parthandle?a=tree', loadFilter: function(rows){
return convert(rows); return convert(rows);
},onSelect: function (node) { $('#spr').combobox({ url: 'getuser?partid=' + node.id + '&a=combobox', }); } }); },onSelect: function (node) { $('#spr').combobox({
url: 'getuser?partid=' + node.id + '&a=combobox',
}); } });
function spjdsubmitForm() { function spjdsubmitForm() {
var spjddata = $('#spjdff').serializeJSON(); var spjddata = $('#spjdff').serializeJSON();
spjddata['spr'] = $('#spr').combobox('getValues')
console.log(spjddata)
spjddata['zylx'] = $('#zylxlist').datalist('getSelected').value spjddata['zylx'] = $('#zylxlist').datalist('getSelected').value
$.ajax({ $.ajax({
type: "POST", type: "POST",

View File

@ -98,7 +98,7 @@
field: 'accept', title: '建议状态', width: 80, styler: function (value, row, index) { field: 'accept', title: '建议状态', width: 80, styler: function (value, row, index) {
switch (value) { switch (value) {
case 1: return 'background-color:green;'; break; case 1: return 'background-color:green;'; break;
case 0: return 'background-color:yellow;'; break; case 0: return 'background-color:red;'; break;
} }
}, formatter: function (value, row, index) { }, formatter: function (value, row, index) {

View File

@ -47,7 +47,7 @@
{ field: 'id', title: 'ID', hidden: true }, { field: 'id', title: 'ID', hidden: true },
{ field: 'jdmc', title: '节点名称', width: 40 }, { field: 'jdmc', title: '节点名称', width: 40 },
{ field: 'spbm__partname', title: '审批部门', width: 120 }, { field: 'spbm__partname', title: '审批部门', width: 120 },
{ field: 'spr__name', title: '审批人', width: 120 }, { field: 'sprnames', title: '审批人', width: 120 },
]] ]]
}); });
$('#fxcstable').datagrid({ $('#fxcstable').datagrid({

View File

@ -480,6 +480,27 @@ def getspr(ubp):
return User.objects.get(ubelongpart=currentpart,issuper=1) return User.objects.get(ubelongpart=currentpart,issuper=1)
return a return a
def getsprs(ubp):
currentpart=ubp
a=getsprs_ubp(currentpart)
while a==False:
currentpart=currentpart.parentid #已找不到上级部门
if currentpart:
a=getsprs_ubp(currentpart)
else:
return User.objects.get(ubelongpart=currentpart,issuper=1)
return a
def getsprs_ubp(ubp):
a=ubp
if a.bmzg !=',':
zgstr = a.bmzg
zglist = zgstr.split(',')
zglist = list(map(int, list(filter(None, zglist))))
return zglist
else:
return False
@check_login @check_login
def menutree(req): def menutree(req):
userid = req.session['userid'] userid = req.session['userid']
@ -1499,13 +1520,15 @@ def troublehandle(req):
userid = req.session['userid'] userid = req.session['userid']
if User.objects.get(userid = userid).issuper == 1: if User.objects.get(userid = userid).issuper == 1:
a = Trouble.objects.get(troubleid = req.POST.get('troubleid')) a = Trouble.objects.get(troubleid = req.POST.get('troubleid'))
a.delete() a.deletemark=0
a.save()
return JsonResponse({"code":1}) return JsonResponse({"code":1})
else: else:
a = Trouble.objects.get(troubleid = req.POST.get('troubleid')) a = Trouble.objects.get(troubleid = req.POST.get('troubleid'))
b = TroubleAccess.objects.filter(troubleid__troubleid=req.POST.get('troubleid')).count() b = TroubleAccess.objects.filter(troubleid__troubleid=req.POST.get('troubleid')).count()
if b == 1 and a.fxr.userid==userid: if b == 1 and a.fxr.userid==userid:
a.delete() a.deletemark=0
a.save()
return JsonResponse({"code":1}) return JsonResponse({"code":1})
else: else:
return JsonResponse({"code":0}) return JsonResponse({"code":0})
@ -3496,7 +3519,7 @@ def apisuggest(req):
a = Suggest.objects.filter(usecomp=Partment.objects.get(partid=companyid)).order_by('-submittime') a = Suggest.objects.filter(usecomp=Partment.objects.get(partid=companyid)).order_by('-submittime')
total = a.count() total = a.count()
startnum,endnum=fenye(req) startnum,endnum=fenye(req)
a = a[startnum:endnum].values('jyid','jylb__dickeyname','jyr__name','jybm__partname','dqxz','jynr','jynum','jyzt','todouser__userid','todouser__name','jyqy__name','jydd','submittime') a = a[startnum:endnum].values('jyid','jylb__dickeyname','jyr__name','jybm__partname','dqxz','jynr','jynum','jyzt','todouser__userid','todouser__name','jyqy__name','jydd','submittime','accept')
return HttpResponse(transjson(total,a),content_type="application/json") return HttpResponse(transjson(total,a),content_type="application/json")
elif a == 'listself': elif a == 'listself':
userid = req.session['userid'] userid = req.session['userid']
@ -3504,7 +3527,7 @@ def apisuggest(req):
a = Suggest.objects.filter(jyr__userid=userid).order_by('-submittime') a = Suggest.objects.filter(jyr__userid=userid).order_by('-submittime')
total = a.count() total = a.count()
startnum,endnum=fenye(req) startnum,endnum=fenye(req)
a = a[startnum:endnum].values('jyid','jylb__dickeyname','jyr__name','jybm__partname','dqxz','jynr','jynum','jyzt','todouser__userid','todouser__name','jyqy__name','jydd','submittime') a = a[startnum:endnum].values('jyid','jylb__dickeyname','jyr__name','jybm__partname','dqxz','jynr','jynum','jyzt','todouser__userid','todouser__name','jyqy__name','jydd','submittime','accept')
return HttpResponse(transjson(total,a),content_type="application/json") return HttpResponse(transjson(total,a),content_type="application/json")
elif a == 'listtodo': elif a == 'listtodo':
userid = req.session['userid'] userid = req.session['userid']
@ -3512,7 +3535,7 @@ def apisuggest(req):
a = Suggest.objects.filter(todouser__userid=userid).order_by('-submittime') a = Suggest.objects.filter(todouser__userid=userid).order_by('-submittime')
total = a.count() total = a.count()
startnum,endnum=fenye(req) startnum,endnum=fenye(req)
a = a[startnum:endnum].values('jyid','jylb__dickeyname','jyr__name','jybm__partname','dqxz','jynr','jynum','jyzt','todouser__userid','todouser__name','jyqy__name','jydd','submittime') a = a[startnum:endnum].values('jyid','jylb__dickeyname','jyr__name','jybm__partname','dqxz','jynr','jynum','jyzt','todouser__userid','todouser__name','jyqy__name','jydd','submittime','accept')
return HttpResponse(transjson(total,a),content_type="application/json") return HttpResponse(transjson(total,a),content_type="application/json")
elif a == 'todonum': elif a == 'todonum':
userid = req.session['userid'] userid = req.session['userid']
@ -3521,7 +3544,7 @@ def apisuggest(req):
elif a == 'detail': elif a == 'detail':
jyid=req.GET.get('jyid') jyid=req.GET.get('jyid')
a = Suggest.objects.filter(jyid=jyid) a = Suggest.objects.filter(jyid=jyid)
x = a.values('jyid','jylb__dickeyname','jynum','submittime','jyr__name','dqxz','jynr','jybm__partname','jyimg','qwxg','jyqy__name','jydd','jyzt','clr__name','jyfk','clcs','pgr__name','clms','jyimg2','sjwcsj')[0] x = a.values('jyid','jylb__dickeyname','jynum','submittime','jyr__name','dqxz','jynr','jybm__partname','jyimg','qwxg','jyqy__name','jydd','jyzt','clr__name','jyfk','clcs','pgr__name','clms','jyimg2','sjwcsj','accept')[0]
if x['jyimg']!='': if x['jyimg']!='':
x['jyimg'] = x['jyimg'].split('?') x['jyimg'] = x['jyimg'].split('?')
else: else:
@ -3551,7 +3574,7 @@ def apisuggest(req):
if req.GET.get('jssj'): if req.GET.get('jssj'):
a = a.filter(submittime__lte=req.GET.get('jssj')) a = a.filter(submittime__lte=req.GET.get('jssj'))
total = a.count() total = a.count()
a = a[startnum:endnum].values('jyid','jylb__dickeyname','jyr__name','jybm__partname','dqxz','jynr','jynum','jyzt','todouser__userid','todouser__name','jyqy__name','jydd','submittime') a = a[startnum:endnum].values('jyid','jylb__dickeyname','jyr__name','jybm__partname','dqxz','jynr','jynum','jyzt','todouser__userid','todouser__name','jyqy__name','jydd','submittime','accept')
return HttpResponse(transjson(total,a),content_type="application/json") return HttpResponse(transjson(total,a),content_type="application/json")
elif a == 'exportexcel': elif a == 'exportexcel':
userid = req.session['userid'] userid = req.session['userid']
@ -3987,13 +4010,14 @@ def apioperation(req):
obj.zyzt = {'zyzt':'确认中','index':0} obj.zyzt = {'zyzt':'确认中','index':0}
obj.save() obj.save()
splc = [] splc = []
splc.append({'jdmc':'作业部门审批','spr':getspr(obj.zybm)}) splc.append({'jdmc':'作业负责人审批','sprs':[userid]})
splc.append({'jdmc':'属地部门审批','spr':getspr(obj.sdbm)}) splc.append({'jdmc':'作业部门审批','sprs':getsprs(obj.zybm)})
splc.append({'jdmc':'属地部门审批','sprs':getsprs(obj.sdbm)})
for i in Operationspjd.objects.filter(zylx=obj.zylx,usecomp=Partment.objects.get(partid=getcompany(userid))).order_by('id'): for i in Operationspjd.objects.filter(zylx=obj.zylx,usecomp=Partment.objects.get(partid=getcompany(userid))).order_by('id'):
splc.append({'jdmc':i.jdmc,'spr':i.spr.userid}) splc.append({'jdmc':i.jdmc,'sprs':i.sprs})
obj.zyzt['splc']=splc obj.zyzt['splc']=splc
obj.save() obj.save()
Operspxq.objects.create(oper=obj,jdmc='作业负责人审批',spr=obj.zyfzr,checked=1,spbm=obj.zyfzr.ubelongpart) # Operspxq.objects.create(oper=obj,jdmc='作业负责人审批',spr=obj.zyfzr,checked=1,spbm=obj.zyfzr.ubelongpart)
b=[]#发送通知 b=[]#发送通知
for i in data['zyry']: for i in data['zyry']:
x=User.objects.get(userid=i) x=User.objects.get(userid=i)
@ -4048,7 +4072,7 @@ def apioperation(req):
for x in b: for x in b:
i.append(x.oper.zyid) i.append(x.oper.zyid)
a = Operation.objects.filter(usecomp=usecomp,deletemark=1,zyid__in=i) a = Operation.objects.filter(usecomp=usecomp,deletemark=1,zyid__in=i)
a = (a|Operation.objects.filter(todouser=User.objects.get(userid=userid))).order_by('-submittime') a = (a|Operation.objects.filter(todouser=User.objects.get(userid=userid))|Operation.objects.filter(todousers__contains=[userid])).order_by('-submittime')
total = a.count() total = a.count()
startnum,endnum=fenye(req) startnum,endnum=fenye(req)
a = a[startnum:endnum].values('zyid','zylx__dickeyname','zynum','zyfzr__name','zynr','zyzt','submittime') a = a[startnum:endnum].values('zyid','zylx__dickeyname','zynum','zyfzr__name','zynr','zyzt','submittime')
@ -4098,11 +4122,13 @@ def apioperation(req):
obj.zyzt['index'] = 0 obj.zyzt['index'] = 0
index = obj.zyzt['index'] index = obj.zyzt['index']
obj.zyzt['jdmc'] = obj.zyzt['splc'][index]['jdmc'] obj.zyzt['jdmc'] = obj.zyzt['splc'][index]['jdmc']
obj.todouser = User.objects.get(userid=obj.zyzt['splc'][index]['spr']) sprs = obj.zyzt['splc'][index]['sprs']
obj.todousers = sprs
obj.save() obj.save()
for i in sprs:
postdict={ postdict={
'touser':'', 'touser':'',
'template_id':obj.todouser.openid, 'template_id':User.objects.get(userid=i).openid,
'data':{ 'data':{
'first':{ 'first':{
'value':obj.zylx.dickeyname + '作业审批:' 'value':obj.zylx.dickeyname + '作业审批:'
@ -4124,21 +4150,24 @@ def apioperation(req):
send_wechatmsg.delay(postdict) send_wechatmsg.delay(postdict)
return JsonResponse({"code":1}) return JsonResponse({"code":1})
elif a == 'spzy': elif a == 'spzy':
userid = req.session['userid']
zyid = req.POST.get('zyid') zyid = req.POST.get('zyid')
obj = Operation.objects.get(zyid=zyid) obj = Operation.objects.get(zyid=zyid)
oldtodo = obj.todouser oldtodo = obj.todousers
oldjdmc = obj.zyzt['jdmc'] oldjdmc = obj.zyzt['jdmc']
nextindex = obj.zyzt['index']+1 nextindex = obj.zyzt['index']+1
spruser = User.objects.get(userid=userid)
try: try:
nextsplc = obj.zyzt['splc'][nextindex] nextsplc = obj.zyzt['splc'][nextindex]
obj.zyzt['zyzt'] = '审批中' obj.zyzt['zyzt'] = '审批中'
obj.zyzt['index'] = nextindex obj.zyzt['index'] = nextindex
obj.zyzt['jdmc'] = nextsplc['jdmc'] obj.zyzt['jdmc'] = nextsplc['jdmc']
obj.todouser = User.objects.get(userid=nextsplc['spr']) obj.todousers = nextsplc['sprs']
obj.save() obj.save()
for i in nextsplc['sprs']:
postdict={ postdict={
'touser':'', 'touser':'',
'template_id':obj.todouser.openid, 'template_id':User.objects.get(userid=i).openid,
'data':{ 'data':{
'first':{ 'first':{
'value':obj.zylx.dickeyname + '作业审批:' 'value':obj.zylx.dickeyname + '作业审批:'
@ -4158,12 +4187,14 @@ def apioperation(req):
} }
} }
send_wechatmsg.delay(postdict) send_wechatmsg.delay(postdict)
Operspxq.objects.create(oper=Operation.objects.get(zyid=zyid),jdmc=oldjdmc,spr=oldtodo,checked=1,spbm=oldtodo.ubelongpart)
Operspxq.objects.create(oper=Operation.objects.get(zyid=zyid),jdmc=oldjdmc,spr=spruser,checked=1,spbm=spruser.ubelongpart)
except : except :
obj.zyzt['zyzt'] = '待关闭' obj.zyzt['zyzt'] = '待关闭'
obj.todouser = obj.zyfzr obj.todouser = obj.zyfzr
obj.todousers = None
obj.save() obj.save()
Operspxq.objects.create(oper=Operation.objects.get(zyid=zyid),jdmc=oldjdmc,spr=oldtodo,checked=1,spbm=oldtodo.ubelongpart) Operspxq.objects.create(oper=Operation.objects.get(zyid=zyid),jdmc=oldjdmc,spr=spruser,checked=1,spbm=spruser.ubelongpart)
postdict={ postdict={
'touser':'', 'touser':'',
'template_id':obj.zyfzr.openid, 'template_id':obj.zyfzr.openid,
@ -4202,7 +4233,7 @@ def apioperation(req):
userid = req.session['userid'] userid = req.session['userid']
i = [] i = []
b = Operzyry.objects.filter(operzyry__userid=userid,checked=0) b = Operzyry.objects.filter(operzyry__userid=userid,checked=0)
c = Operation.objects.filter(todouser=User.objects.get(userid=userid)) c = Operation.objects.filter(Q(todouser=User.objects.get(userid=userid))|Q(todousers__contains=[userid]))
for x in b: for x in b:
i.append(x.oper.zyid) i.append(x.oper.zyid)
for x in c: for x in c:
@ -4286,8 +4317,9 @@ def apioperationspjd(req):
zylx = Dickey.objects.get(dickeyid=data['zylx']) zylx = Dickey.objects.get(dickeyid=data['zylx'])
jdmc = data['jdmc'] jdmc = data['jdmc']
spbm = Partment.objects.get(partid=data['spbm']) spbm = Partment.objects.get(partid=data['spbm'])
spr = User.objects.get(userid=data['spr']) #spr = User.objects.get(userid=data['spr'])
Operationspjd.objects.create(jdmc=jdmc,zylx=zylx,spbm=spbm,spr=spr,usecomp=Partment.objects.get(partid=companyid)) sprs = data['spr']
Operationspjd.objects.create(jdmc=jdmc,zylx=zylx,spbm=spbm,sprs=sprs,usecomp=Partment.objects.get(partid=companyid))
return JsonResponse({"code":1}) return JsonResponse({"code":1})
elif a=='listall': elif a=='listall':
if req.GET.get('zylx'): if req.GET.get('zylx'):
@ -4296,8 +4328,9 @@ def apioperationspjd(req):
companyid = getcompany(userid) companyid = getcompany(userid)
a = Operationspjd.objects.filter(zylx=Dickey.objects.get(dickeyid=zylx),usecomp=Partment.objects.get(partid=companyid)).order_by('id') a = Operationspjd.objects.filter(zylx=Dickey.objects.get(dickeyid=zylx),usecomp=Partment.objects.get(partid=companyid)).order_by('id')
total = a.count() total = a.count()
startnum,endnum=fenye(req) a = a.values('id','jdmc','spbm__partname','sprs')
a = a[startnum:endnum].values('id','jdmc','spbm__partname','spr__name') for i in a:
i['sprnames'] = list(User.objects.filter(userid__in=i['sprs']).values_list('name',flat=True))
return HttpResponse(transjson(total,a),content_type="application/json") return HttpResponse(transjson(total,a),content_type="application/json")
elif a == 'del': elif a == 'del':
id = req.GET.get('id') id = req.GET.get('id')
@ -5138,6 +5171,13 @@ def apiriskact(req):
startnum,endnum=fenye(req) startnum,endnum=fenye(req)
a = a.order_by('area')[startnum:endnum].values('id','area__name','type__dickeyname','name','level','qrcode','group__groupname','zrbm__partname','zrr__name','gkcj') a = a.order_by('area')[startnum:endnum].values('id','area__name','type__dickeyname','name','level','qrcode','group__groupname','zrbm__partname','zrr__name','gkcj')
return HttpResponse(transjson(total,a),content_type="application/json") return HttpResponse(transjson(total,a),content_type="application/json")
elif a=='listall2':
a = RiskAct.objects
if req.GET.get('area'):
a = a.filter(area__id = req.GET.get('area'))
total = a.count()
a = a.values('id','area__name','type__dickeyname','name','level','qrcode','group__groupname','zrbm__partname','zrr__name','gkcj')
return HttpResponse(transjson(total,a),content_type="application/json")
elif a=='listself': elif a=='listself':
groups = Group.objects.filter(users=User.objects.get(userid=userid)) groups = Group.objects.filter(users=User.objects.get(userid=userid))
objs = RiskAct.objects.filter(group__in=groups) objs = RiskAct.objects.filter(group__in=groups)
@ -5501,8 +5541,8 @@ def apiriskacttask(req):
startnum,endnum=fenye(req) startnum,endnum=fenye(req)
objs = objs[startnum:endnum].values('id','riskact__group__groupname','riskact__area__name','riskact__type__dickeyname','riskact__id','riskact__group__groupid','riskact__name','riskact__level','riskact__tasktype','taskadd','taskexpire','user__userid','usable') objs = objs[startnum:endnum].values('id','riskact__group__groupname','riskact__area__name','riskact__type__dickeyname','riskact__id','riskact__group__groupid','riskact__name','riskact__level','riskact__tasktype','taskadd','taskexpire','user__userid','usable')
return HttpResponse(transjson(total,objs),content_type="application/json") return HttpResponse(transjson(total,objs),content_type="application/json")
elif a == 'listself': elif a == 'listself':#排查记录
a = RiskActTask.objects.filter(user__userid=userid,istask=1) a = RiskActTask.objects.filter(user__userid=userid)
total = a.count() total = a.count()
startnum,endnum=fenye(req) startnum,endnum=fenye(req)
a = a.order_by('-id')[startnum:endnum].values('id','riskact__level','riskact__name','riskact__area__name','riskact__place','taskdo','state','usable','riskact__group__groupname','taskadd','taskexpire','user__userid','riskact__id') a = a.order_by('-id')[startnum:endnum].values('id','riskact__level','riskact__name','riskact__area__name','riskact__place','taskdo','state','usable','riskact__group__groupname','taskadd','taskexpire','user__userid','riskact__id')