Django クエリセットフィルタリングで等しくない条件を実行するにはどうすればいいですか? 質問する

Django クエリセットフィルタリングで等しくない条件を実行するにはどうすればいいですか? 質問する

__gtDjangoのモデルクエリセットでは、比較値にandがあるようですが、 or (not equals__lt )はありますか?not equalsを使用してフィルタリングしたいです。たとえば、__ne!=

Model:
    bool a;
    int x;

私はやってみたいです

results = Model.objects.exclude(a=True, x!=5)

!=正しい構文ではありません。 も試しました__ne

最終的に私が使用したのは:

results = Model.objects.exclude(a=True, x__lt=5).exclude(a=True, x__gt=5)

ベストアンサー1

使用できますQ オブジェクトこれには、演算子を使用して否定し~、通常の Python 式と同様に組み合わせることができます。

from myapp.models import Entry
from django.db.models import Q

Entry.objects.filter(~Q(id=3))

3ID が であるエントリを除くすべてのエントリを返します。

[<Entry: Entry object>, <Entry: Entry object>, <Entry: Entry object>, ...]

おすすめ記事