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.