我有一个非常简单的查询:
select * from tbl1 where title not in('asdasd', 'asdasd')
。
如何将其翻译为 Django?就像我想要相反的:
Table.objects.filter(title__in=myListOfTitles)
尝试使用排除
Table.objects.exclude(title__in=myListOfTitles)
(这个帖子很旧,但仍然可以用谷歌搜索)
您可以将
models.Q
与“~”一起使用,如下所示:
Table.objects.filter(~Q(title__in=myListOfTitles))
当您有多种情况时,此方法特别有用。
Table.objects.exclude(title__in=myListOfTitles)
Django 提供了两个选项。
exclude(<condition>)
filter(~Q(<condition>))
方法2使用Q()方法
>>> from django.db.models import Q
>>> queryset = User.objects.filter(~Q(id__lt=5))
您还可以使用
exclude
:
Table.objects.exclude(title__in=myListOfTitles)
您还可以组合
filter
和 exclude
Table.objects.filter(title__in=includingTitles).exclude(title__in=excludingTitles)