Запити 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 MyObject просто мав би відношення до вашого класу моделі Django, яким би він не був. Так, наприклад, ви можете мати UserProfile.objects, якщо у вас встановлена ​​модель UserProfile.
codeguy

Дякую, але я запитую правильно .objects. Що це?
Серж

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.