Django 相当于 SQL 不在

问题描述 投票:0回答:5

我有一个非常简单的查询:

select * from tbl1 where title not in('asdasd', 'asdasd')

如何将其翻译为 Django?就像我想要相反的:

Table.objects.filter(title__in=myListOfTitles)

django django-orm
5个回答
200
投票

尝试使用排除

Table.objects.exclude(title__in=myListOfTitles)

38
投票

(这个帖子很旧,但仍然可以用谷歌搜索)

您可以将

models.Q
与“~”一起使用,如下所示:

Table.objects.filter(~Q(title__in=myListOfTitles))

当您有多种情况时,此方法特别有用。


29
投票
Table.objects.exclude(title__in=myListOfTitles)

3
投票

Django 提供了两个选项。

exclude(<condition>)
filter(~Q(<condition>))

方法2使用Q()方法

>>> from django.db.models import Q
>>> queryset = User.objects.filter(~Q(id__lt=5))

0
投票

您还可以使用

exclude
:

Table.objects.exclude(title__in=myListOfTitles)

您还可以组合

filter
exclude

Table.objects.filter(title__in=includingTitles).exclude(title__in=excludingTitles)
© www.soinside.com 2019 - 2024. All rights reserved.