Django sorguları: bir listede bulunan kimliği hariç tutmak için nesneleri nasıl filtreleyebilirim?


89

Bir sorguda, sonucun bir listeye ait kimliği olan nesne örneklerini hariç tutması için nasıl filtre uygulayabilirim?

Diyelim ki bende var:

object_id_list = [1, 5, 345]

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

Tarzında bir şey "SELECT * FROM ... WHERE id NOT IN (...)"

Yanıtlar:


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

1
Adı ne MyObject.objects? Bu ders hakkında nereden okuyabilirim?
Serge

@Serge MyObject sadece Django model sınıfınızla ilgili olacaktır. Örneğin, bir UserProfile model kurulumunuz varsa, UserProfile.objects olabilir.
codeguy

Teşekkür ederim, ama doğru soruyorum .objects. Bu ne?
Serge

18

Bunu Qnesneyi kullanarak da yapabilirsiniz :

from django.db.models import Q

MyObject.objects.filter(time__gte=datetime.now()).filter(~Q(id__in=object_id_list))
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.