2010-02-06 6 views
2

Django 앱에서 모델의 존재 여부를 확인하는 데 사용할 수있는 방법은 무엇입니까?Django 모델의 존재를 확인하는 협약?

나는이 방법을 사용 보았다 :

def profile_exists(user): 
     try: 
       UserProfile.objects.get(user = user) 
       return True 
     except: 
       return False 

이 목적에 적합한 내장 함수가 있습니까?

답변

2

베어 except을 사용하지 마십시오. 대신 모델의 DoesNotExist 내부 예외 또는 django.core.exceptions.ObjectDoesNotExistshould be caught입니다.

그 외에도 len(SomeModel.objects.filter(...))을 사용하거나 허용 할 수 있습니다.

1

알맞은 때까지는 except입니다. 당신은 항상 그것들보다 더 많은 것을 얻습니다!

Ignacio Vazquez-Abrams에서 언급 한 바와 같이, 하나의 모델에 대한 DoesNotExist 예외 내장을 활용해야합니다

def profile_exists(user): 
     try: 
       UserProfile.objects.get(user = user) 
       return True 
     except UserProfile.DoesNotExist: 
       return False 

프레스토를! 단순히 전화 후

def object_exists(model, **kwargs): 
     try: 
      model.objects.get(**kwargs) 
      return True 
     except model.DoesNotExist: 
      return False 

그리고 :

2

은 추가 참고로, 당신은 그것을 밖으로 범용 기능을 만들 수

항상 그 이름에서 알 수 있듯이 get_object_or_404을,있다
profile_exists = object_exists(UserProfile, user=user) 
+0

대단한 제안입니다. – jathanism

0

, 개체를 반환하거나 HttpNotFound 오류가 발생합니다.

from django.shortcuts import get_object_or_404 
instance = get_object_or_404(SomeModel, filter_args=whatever) 
관련 문제