Truy vấn Django: làm cách nào để lọc các đối tượng để loại trừ id có trong danh sách?


87

Làm cách nào tôi có thể lọc trong một truy vấn để kết quả loại trừ bất kỳ trường hợp đối tượng nào có ID thuộc danh sách?

Hãy nói rằng tôi có:

object_id_list = [1, 5, 345]

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

Một cái gì đó theo phong cách "SELECT * FROM ... WHERE id NOT IN (...)"

Câu trả lời:


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

1
Tên của là MyObject.objectsgì? Tôi có thể đọc ở đâu về lớp học này?
Serge

@Serge MyObject sẽ chỉ liên quan đến lớp mô hình Django của bạn bất kể nó có thể là gì. Vì vậy, ví dụ, bạn có thể có UserProfile.objects nếu bạn có thiết lập mô hình UserProfile.
codeguy

Cảm ơn bạn, nhưng tôi đang hỏi đúng về .objects. Nó là gì?
Serge

14

Bạn cũng có thể làm điều này bằng cách sử dụng Qđối tượng:

from django.db.models import Q

MyObject.objects.filter(time__gte=datetime.now()).filter(~Q(id__in=object_id_list))
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.