Permintaan Django: bagaimana cara menyaring objek untuk mengecualikan id yang ada di dalam daftar?

89

Bagaimana saya bisa memfilter dalam kueri sehingga hasilnya mengecualikan instance objek apa pun dengan ID yang termasuk dalam daftar?

Katakanlah saya punya:

object_id_list = [1, 5, 345]

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

Sesuatu dengan gaya "SELECT * FROM ... WHERE id NOT IN (...)"

miernik
sumber

Jawaban:

176
MyObject.objects.filter(time__gte=datetime.now()).exclude(id__in=object_id_list)
Ignacio Vazquez-Abrams
sumber
1
Apa nama MyObject.objects? Di mana saya dapat membaca tentang kelas ini?
Serge
@Serge MyObject hanya akan berhubungan dengan kelas model Django anda apapun itu. Jadi misalnya Anda mungkin memiliki UserProfile.objects jika Anda memiliki pengaturan model UserProfile.
codeguy
Terima kasih, tapi saya bertanya dengan benar .objects. Apa itu?
Serge
18

Anda juga dapat melakukan ini menggunakan Qobjek:

from django.db.models import Q

MyObject.objects.filter(time__gte=datetime.now()).filter(~Q(id__in=object_id_list))
javed
sumber