如何把不符合要求的元素从查询结果中删除,但不影响数据库

新手上路,请多包涵

我对数据库中存储的设备使用率进行了查询,对某一段时间内的设备使用率求了平均值,然后想把平均值处于某一范围内的设备取出来,或者说把不在范围内的剔除,但不能删除数据库中的数据,我想到的方法是根据设备平均使用率做判断,符合要求的放到一个列表里,但这样做之后,导致不能再像一开始那样就行filter了,因为已经变为列表,而不再是queryset了,不知哪位大神有解决办法?

阅读 3k
2 个回答

按照你回复的这个语句

node.utilization_set.filter(day__range=(date_list[0],date_list[-1])).aggregate(Avg('useage'))

应该是要取 Node 表的数据,

from django.db.models import Avg

qs = Node.objects.filter(utilization__day__range=(date_list[0],date_list[-1]))
qs = qs.annotate(useage_avg=Avg('utilization__useage')) 
qs = qs.filter(useage_avg__gt=0.5)  # 这里根据需求改

在数据库中加一列类似 is_deleted, 默认为0, 把不在范围内的数据设为 1, 取值的时候只取 is_deleted = 0

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题