2012-01-26 2 views
0

Есть ли способ сделать следующее в одной строке с помощью запроса django?Использование запроса вместо цикла for

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

Или лучше, чем это?

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

ответ

0

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

+0

Это Freakin' удивительным. – Brandon

+0

Это не сработало. Возможно, это потому, что 'userprofile' является полем M2M? – David542

+3

Попробуйте: '.filter (userprofile__isnull = True)'. Работает ли это внешний ключ или M2M. –

Смежные вопросы