แบบสอบถาม Django: วิธีกรองออบเจ็กต์เพื่อไม่รวม id ที่อยู่ในรายการ?


89

ฉันจะกรองแบบสอบถามเพื่อให้ผลลัพธ์ไม่รวมอินสแตนซ์ออบเจ็กต์ที่มี ID ที่เป็นของรายการได้อย่างไร

บอกว่าฉันมี:

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

คำตอบ:


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

1
ชื่อMyObject.objectsอะไร? ฉันสามารถอ่านเกี่ยวกับคลาสนี้ได้ที่ไหน
เสิร์จ

@Serge MyObject จะเกี่ยวข้องกับคลาสโมเดล Django ของคุณไม่ว่ามันจะเป็นอะไรก็ตาม ตัวอย่างเช่นคุณอาจมี UserProfile.objects หากคุณมีการตั้งค่าโมเดล UserProfile
codeguy

ขอบคุณ แต่ im .objectsขอให้ถูกต้องเกี่ยวกับ มันคืออะไร?
เสิร์จ

18

คุณยังสามารถทำได้โดยใช้Qวัตถุ:

from django.db.models import Q

MyObject.objects.filter(time__gte=datetime.now()).filter(~Q(id__in=object_id_list))
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.