Consultas do Django: como filtrar objetos para excluir id que está em uma lista?

87

Como posso filtrar em uma consulta para que o resultado exclua quaisquer instâncias de objeto com ID pertencente a uma lista?

Digamos que tenho:

object_id_list = [1, 5, 345]

MyObject.objects.filter(Q(time__gte=datetime.now()) & Q( ... what to put here? ... ))

Algo no estilo de "SELECT * FROM ... WHERE id NOT IN (...)"

miernik
fonte

Respostas:

171
MyObject.objects.filter(time__gte=datetime.now()).exclude(id__in=object_id_list)
Ignacio Vazquez-Abrams
fonte
1
Qual é o nome de MyObject.objects? Onde posso ler sobre esta aula?
Serge,
@Serge MyObject estaria apenas relacionado à sua classe de modelo Django, seja ela qual for. Portanto, por exemplo, você pode ter UserProfile.objects se tiver uma configuração de modelo de UserProfile.
codeguy de
Obrigado, mas estou perguntando sobre isso .objects. O que é isso?
Serge
14

Você também pode fazer isso usando o Qobjeto:

from django.db.models import Q

MyObject.objects.filter(time__gte=datetime.now()).filter(~Q(id__in=object_id_list))
javed
fonte