Sql 如何在django中添加或排除查询的约束?

Sql 如何在django中添加或排除查询的约束?,sql,django,django-models,django-orm,Sql,Django,Django Models,Django Orm,我有下面的排除,它带回了在过去两分钟内有交易的所有书籍。我想添加另一个约束,该约束表示仅当来自一系列商店时 在SQL中,位置id=1或位置id=2或位置id=3 书籍有一个位置标识 如何将其应用于以下查询 transaction_window = timezone.now() + datetime.timedelta(minutes=-2) ts = Book.objects.exclude(book_id__in = Status.objects

我有下面的排除,它带回了在过去两分钟内有交易的所有书籍。我想添加另一个约束,该约束表示仅当来自一系列商店时

在SQL中,位置id=1或位置id=2或位置id=3

书籍有一个位置标识

如何将其应用于以下查询

transaction_window = timezone.now() + datetime.timedelta(minutes=-2)

ts = Book.objects.exclude(book_id__in = Status.objects
                             .filter(transaction_time__gte=transaction_window)
                             .values_list('book_id', flat=True))

使用一个。它们内置于django中,允许更复杂的查找。

您可能只需要
location\uu in=(1,2,3)
假设
Book
模型有字段
Book\u id
Status
也有字段
Book\u id
,并且该字段只是普通的
IntegerField
或类似字段

from django.db.models import Q

transaction_window = timezone.now() - datetime.timedelta(minutes=2)

statuses = Status.objects.filter(transaction_time__gte=transaction_window)
ts = Book.objects.filter(~Q(book__id__in=statuses)
                         | ~Q(location_id__in=(1, 2, 3)))
如果我对您的模型的猜测是正确的。

Book.objects.exclude(状态\事务\时间\事务\窗口)