gpt4 book ai didi

django - 如何在 Django ORM 中使用 Q & Q 修复排除

转载 作者:行者123 更新时间:2023-12-04 14:20:38 24 4
gpt4 key购买 nike

我有一个带有过滤器和排除的简单查询。排除 Q & Q 不起作用。

下面是我正在使用的查询。

start_date = (datetime(time.localtime().tm_year, time.localtime().tm_mon, 1) - timedelta(1)).replace(day=1)

data = models.Test.objects.filter(
is_deleted=False).exclude(Q(status__in=[1,2,3]) & Q(modified_at__lt=start_date))\
.select_related('created_by')\
.prefetch_related('name')

我希望排除工作。如果我使用 exclude 两次,就会得到结果。

最佳答案

From the doc

exclude(**kwargs)
Returns a new QuerySet containing objects that do not match the given lookup parameters. The lookup parameters (**kwargs) should be in the format described in Field lookups below. Multiple parameters are joined via AND in the underlying SQL statement, and the whole thing is enclosed in a NOT().



所以,只需使用 Q() 带有 的对象逗号分隔 ,
.exclude(Q(status__in=[1,2,3],Q(modified_at__lt=start_date))

关于django - 如何在 Django ORM 中使用 Q & Q 修复排除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55472938/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com