2012-01-26 15 views
0

djangoクエリで次の行を1行で実行する方法はありますか?forループの代わりにクエリを使用する

providers_with_no_contacts = [] 
for provider in Provider.objects.all(): 
    if not provider.userprofile_set.all(): 
     provider_with_no_contacts.append(provider) 

これよりも良い方法はありますか?素晴らしいfreakinのだ

providers_with_no_contacts = [provider for provider in Provider.objects.all() 
           if not provider.userprofile_set.all()] 

答えて

1
Provider.objects.filter(userprofile__isnull=True) 
0

providers_with_no_contacts = Provider.objects.filter(userprofile_set=None)

+0

。 – Brandon

+0

それは動作しませんでした。おそらく 'userprofile'はM2Mフィールドなのでしょうか? – David542

+3

試してください: '.filter(userprofile__isnull = True)'。フィールドが外部キーかM2Mかにかかわらず動作します。 –

関連する問題