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モデルを設定している場合は、UserProfile.objectsを使用できます。
codeguy

ありがとう、しかし私はについて正しく尋ねてい.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.