Запросы Django: как отфильтровать объекты, чтобы исключить идентификатор, который находится в списке?


87

Как я могу отфильтровать запрос, чтобы результат исключил любые экземпляры объектов с идентификатором, принадлежащим списку?

Допустим, у меня есть:

object_id_list = [1, 5, 345]

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

Что-то в стиле "SELECT * FROM ... WHERE id NOT IN (...)"

Ответы:


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

1
Какое имя MyObject.objects? Где я могу прочитать об этом классе?
Serge

@Serge MyObject будет просто относиться к вашему классу модели Django, каким бы он ни был. Так, например, у вас может быть UserProfile.objects, если у вас есть настройка модели UserProfile.
codeguy

Спасибо, но я спрашиваю прямо об этом .objects. Что это такое?
Serge

14

Вы также можете сделать это с помощью Qобъекта:

from django.db.models import Q

MyObject.objects.filter(time__gte=datetime.now()).filter(~Q(id__in=object_id_list))
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.