2012-01-06 2 views
3

해당 객체가 db에 존재하는지 확인하고 존재하지 않는 경우 데이터베이스에 추가했는지 확인하고 싶습니다.Django 객체가 존재 함

if not MyModel.objects().get(surname='foo'): 
    management.call_command('loaddata', 'Bootstrap_data', verbosity=0)#adds this object from fixtures 

하지만 데시벨 (sqlite3를)에서 쿼리 오류가 발생합니다 : 나는 시도했다. 이 방법으로 개체 유효성 검사를 어떻게 해결할 수 있습니까?

오류는 다음과 같습니다 DB를이 성 (姓)을 가진 어떤 객체가 없기 때문에

DoesNotExist at/
MyModel matching query does not exist. 

그것은이다.

+0

어떤 종류의 오류가 발생합니까? –

답변

4

일반적으로 get_or_create을 사용합니다.

model_instance = MyModel.objects.get_or_create(surname='foo') 

이렇게하려면 management.call_command을 사용하면 안됩니다.

내가 잘못 이해 한 경우 말했다

당신이 좋은 이유가,이 시도 :

try: 
    MyModel.objects.get(surname='foo') 
except MyModel.DoesNotExist: 
     management.call_command(....) 

또는

if not MyModel.objects.filter(surname='foo').exists(): 
     management.call_command(....) 
+0

그리고 비품을 로딩하여 이것을 만들고 싶다면 작동합니까? – Feanor

+0

그의 경우에는 유용하지 않습니다. 그는 코드가 아닌 조명기에서로드하려고합니다. –

+0

일부 조명기 관련 이유로이 작업을 수행하는 경우에 대비하여 방금 내 대답을 업데이트했습니다. –

1
if not MyModel.objects.filter(surname='foo').exists() 

RTFriendlyM

1

문제를 코드로 그 MyModel.objects.get 올리는 것입니다 DoesNotExist,를 사용해보십시오대신 :

if not MyModel.objects.filter(surname='foo').exists(): 
    management.call_command('loaddata', 'Bootstrap_data', verbosity=0) 
관련 문제