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

Respostas:


171
MyObject.objects.filter(time__gte=datetime.now()).exclude(id__in=object_id_list)

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))
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.