2014-07-05 261 views
0

我想要從掃描的last 100數據包中獲取所有包含status = 'open'的數據包的計數。Django過濾器查詢

目前我做的順序搜索,即

packet_obj = Packets.objects.all().oreder_by('-time')[:100] # getting the last 100 packets 

for packets in packet_obj: 
    if packets.status == 'open' : count += 1 # comparing the status 

有直達單查詢得到這個算不算?

+0

爲什麼不能你只是做'QS = Packets.objects.order_by ('-time')[:100]'和'len(qs.filter(status ='open')[:100])' – karthikr

回答

0
在單行

你可以試試這個,而是循環的,我認爲它不可能

packet_obj = Packets.objects.all.oreder_by('-time')[:100] 
count=sum(1 for packets in packet_obj if packets.status == 'open') 

另外你可以試試這個method

+0

而不是應用for循環,Isnt是否有查詢? – PythonEnthusiast

+0

@ user1162512檢查此問題http://stackoverflow.com/questions/4285420/django-cannot-update-a-query-once-a-slice-has-been-taken –

+0

感謝您的鏈接。在第二個答案中提供了27個upvotes的鏈接,哪一個會更快,使用一個循環,因爲我目前正在做或答案本身? – PythonEnthusiast