2012-01-06 5 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の)からクエリエラーを取得: は、私が試してみました。このようなオブジェクト検証方法は、どのように解決できますか?

エラーがある:デシベルで、この姓を持つオブジェクトがないので

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(....) 

OR

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.getDoesNotExistを呼び出すことになります。を試してみてください代わりに:

if not MyModel.objects.filter(surname='foo').exists(): 
    management.call_command('loaddata', 'Bootstrap_data', verbosity=0) 
関連する問題