2012-11-04 100 views
1

有沒有什麼更好的辦法正如我在SQL日誌中看到,us.exists(要做到這一點Django的查詢集最佳實踐

us = User.objects.filter(id=someid) 
if us.exists(): 
    u = us[0] 

)將執行一個SQL查詢,則u = US [0]會執行另一個查詢。所以我們必須做2個查詢來完成任務。我只想問一個更好的方式來做到這一點

回答

2

.get()不使用Django的查詢集緩存。所以,如果你真的想使用和重用查詢集,更好的方式是趕上IndexError像:

us = User.objects.filter(id=someid) 
try: 
    u = us[0] 
except IndexError: 
    #item does not exist. 
+0

非常感謝,你救我的天 –

+0

@TrinhHoangNhu這很好就知道了! – Rohan

6

假設id是獨一無二的,你應該請求原諒,而不是許可:

try: 
    u = User.objects.get(id=someid) 
except User.DoesNotExist: 
    # do whatever you should do if user does not exist