Django ORM如何实现按天获取数据去重求和

  介绍

这篇文章主要讲解了Django ORM如何实现按天获取数据去重求和,内容清晰明了,对此有兴趣的小伙伴可以学习一下,相信大家阅读完之后会有帮助。

我就废话不多说了,大家还是直接看代码吧!

 def total_data(请求):
  data=request_body(请求,& # 39;文章# 39;)
  如果没有数据:
  返回http_return(400 & # 39;参数错误& # 39;)
  #前端传入毫秒为单位的时间戳
  startTimestamp=data.get(& # 39;开始时间# 39;& # 39;& # 39;)
  endTimestamp=data.get (& # 39; endTime& # 39; & # 39; & # 39;)
  
  如果startTimestamp和endTimestamp:
  startTimestamp=int (startTimestamp/1000)
  endTimestamp=int (endTimestamp/1000)
  其他:
  返回http_return(400 & # 39;参数有误& # 39;)
  #小于2019-05-30就是的时间不合法
  如果endTimestamp & lt;startTimestamp或endTimestamp & lt;=1559145600或startTimestamp & lt;=1559145600:
  返回http_return(400 & # 39;无效时间& # 39;)
  如果startTimestamp和endTimestamp:
  #给定时间查询
  开始时间=datetime.fromtimestamp (startTimestamp)
  endTime=datetime.fromtimestamp (endTimestamp)
  t1=datetime(开始时间。年,开始时间。月,startTime.day)
  t2=datetime (endTime。年,endTime。月,endTime。59天,23日,59,999999)
  #用户总人数
  totalUsers=User.objects.exclude(状态=& # 39;破坏# 39;).count ()
  #音频总数
  totalAudioStory=AudioStory.objects.filter (isDelete=False) .count ()
  #专辑总数
  totalAlbums=Album.objects.filter (isDelete=False) .count ()
  #新增用户人数
  列出=User.objects。过滤器(createTime__range=(t1, t2)) .exclude(状态=& # 39;破坏# 39;).count ()
  #活跃用户人数
  activityUsers=LoginLog.objects。过滤器(createTime__range=(t1, t2), isManager=False) . values (& # 39; userUuid_id& # 39;)。\
  注释(Count (& # 39; userUuid_id& # 39;)) .count ()
  #新增音频数
  newAudioStory=AudioStory.objects。过滤器(createTime__range=(t1, t2)) .count ()
  
  #男性
  男=User.objects.filter(性别=1).exclude(状态=& # 39;破坏# 39;).count ()
  
  #女性
  女=User.objects.filter(性别=2).exclude(状态=& # 39;破坏# 39;).count ()
  
  #未知
  unkonwGender=User.objects.filter(性别=0).exclude(状态=& # 39;破坏# 39;).count ()
  
  
  #模板音频
  aduioStoryCount=AudioStory.objects.filter (
  isDelete=False, audioStoryType=1, isUpload=1, createTime__range=(t1, t2)) .count ()
  
  #自由录制
  freedomStoryCount=AudioStory.objects.filter (
  isDelete=False, audioStoryType=0, isUpload=1, createTime__range=(t1, t2)) .count ()
  
  #儿歌
  tags1=Tag.objects.filter(代码=癛ECORDTYPE" name=& # 39;儿歌& # 39;)当代()
  tags1Count=tags1.tagsAudioStory。过滤器(isDelete=False, createTime__range=(t1, t2)) .count() #儿歌作品数
  user1Count=tags1.tagsAudioStory。过滤器(isDelete=False, createTime__range=(t1, t2)) \
  值(& # 39;userUuid_id& # 39;) .annotate (Count (& # 39; userUuid_id& # 39;)) .count() #录音类型人数,去重
  
  #结果=Tag.objects.filter(代码=癛ECORDTYPE") .annotate (Count (& # 39; tagsAudioStory& # 39;))
  
  #父母学堂
  tags2=Tag.objects.filter(代码=癛ECORDTYPE" name=& # 39;父母学堂& # 39;)当代()
  tags2Count=tags2.tagsAudioStory。过滤器(isDelete=False, createTime__range=(t1, t2)) .count ()
  user2Count=tags2.tagsAudioStory。过滤器(isDelete=False, createTime__range=(t1, t2)) \
  值(& # 39;userUuid_id& # 39;) .annotate (Count (& # 39; userUuid_id& # 39;)) .count ()
  
  #国学
  tags3=Tag.objects.filter(代码=癛ECORDTYPE" name=& # 39;国学& # 39;)当代()
  tags3Count=tags3.tagsAudioStory。过滤器(isDelete=False, createTime__range=(t1, t2)) .count ()
  user3Count=tags3.tagsAudioStory。过滤器(isDelete=False, createTime__range=(t1, t2)) \
  值(& # 39;userUuid_id& # 39;) .annotate (Count (& # 39; userUuid_id& # 39;)) .count ()
  
  #英文
  tags4=Tag.objects.filter(代码=癛ECORDTYPE" name=& # 39;英文& # 39;)当代()
  tags4Count=tags4.tagsAudioStory。过滤器(isDelete=False, createTime__range=(t1, t2)) .count ()
  user4Count=tags4.tagsAudioStory。过滤器(isDelete=False, createTime__range=(t1, t2))。\
  值(& # 39;userUuid_id& # 39;) .annotate (Count (& # 39; userUuid_id& # 39;)) .count ()
  
  #其他
  tags5=Tag.objects.filter(代码=癛ECORDTYPE" name=& # 39;其他& # 39;)当代()
  tags5Count=tags5.tagsAudioStory。过滤器(isDelete=False, createTime__range=(t1, t2)) .count ()
  user5Count=tags5.tagsAudioStory。过滤器(isDelete=False, createTime__range=(t1, t2)) \
  值(& # 39;userUuid_id& # 39;) .annotate (Count (& # 39; userUuid_id& # 39;)) .count ()
  
  recordTypePercentage=[
  {& # 39;名字# 39;:& # 39;儿歌& # 39;,& # 39;tagsNum& # 39;: tags1Count, & # 39; userNum& # 39;: user1Count},
  {& # 39;名字# 39;:& # 39;儿歌& # 39;,& # 39;tagsNum& # 39;: tags2Count, & # 39; userNum& # 39;: user2Count},
  {& # 39;名字# 39;:& # 39;国学& # 39;,& # 39;tagsNum& # 39;: tags3Count, & # 39; userNum& # 39;: user3Count},
  {& # 39;名字# 39;:& # 39;英文& # 39;,& # 39;tagsNum& # 39;: tags4Count, & # 39; userNum& # 39;: user4Count},
  {& # 39;名字# 39;:& # 39;其他& # 39;,& # 39;tagsNum& # 39;: tags5Count, & # 39; userNum& # 39;: user5Count}
  ]
  
  #活跃用户排行
  data1_list=[]
  #=AudioStory.objects结果。过滤器(isDelete=False, createTime__range=(t1, t2)) . values (& # 39; userUuid_id& # 39;) .annotate (Count (& # 39; userUuid_id& # 39;)) (: 1)
  res=User.objects。注释(audioStory_count_by_user=Count (“useAudioUuid")) .order_by (& # 39; -audioStory_count_by_user& # 39;) [5]
  在列举指数项(res.values ()):
  data={
  & # 39;ordernum # 39;:指数+ 1,
  & # 39;名字# 39;:条目(& # 39;昵称# 39;),
  & # 39;recordCount& # 39;:条目[& # 39;audioStory_count_by_user& # 39;】
  }
  data1_list.append(数据)
  #热门录制排行
  data2_list=[]
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null
  null

Django ORM如何实现按天获取数据去重求和