python/Django

[Django] QuerySet 의 exists() 와 DoesNotExist

http://portfolio.wonpaper.net 2023. 5. 20. 22:56

Django 코딩할때 자주 쓰이는 QuerySet 의 exists 사용법에 대해 간단히 정리해 둔다.

 

User.objects.get(pk=id).exists()    ( X )

 

User.objects.filter(pk=id).exists()  ( O )

 

try:

     user = User.objects.get(pk=id)

except User.DoesNotExist:

     예외처리 내용

     

위의 내용을 보는바와같이 get() 으로 이용할 때에는 exception 처리가 된다는 점이 포인트이다.

 

그리고, QuerySet.exists()QuerySet.count() 보다는 훨씬 더 효과적이다

 

1
2
3
4
5
6
7
import models 
queryset = models.Hound.objects.filter(pk=1)
 
if queryset.exists():
    return "run away!"
else:
    return "coast is clear"
cs

 

 

 

참고 : https://stackoverflow.com/questions/40910149/django-exists-versus-doesnotexist

참고 : https://dev.to/codereviewdoctor/why-queryset-exists-is-more-efficient-than-queryset-count-2f3h