gpt4 book ai didi

python - 基于 2 个字段的 Django 过滤器

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

我有一个可以设置 expire_date_1 和 expire_date_2 的模型。还有 2 个这样的过滤器。

filter_1 = Q(expire_date_1__isnull=False) & Q(expire_date_1__lte=after_30days) 
filter_2 = Q(expire_date_2__isnull=False) & Q(expire_date_2__lte=after_30days)

我想过滤模型,如果 expire_date_2 不为空则使用 filter_2 否则使用 filter_1我试过用 Case 和 When 来处理,但我不能在 When 函数中过滤,可以吗?

最佳答案

您可以使用 Coalesce [Django-doc]确定要使用的字段:

from django.db.models import <strong>Coalesce</strong>

MyModel.objects.alias(
exp_date=<b>Coalesce('expire_date_2', 'expire_date_1')</b>
).filter(
exp_date__lte=after_30_days
)

或在 之前使用 .annotate(...):

from django.db.models import <strong>Coalesce</strong>

MyModel.objects.<b>annotate(</b>
exp_date=Coalesce('expire_date_2', 'expire_date_1')
<b>)</b>.filter(
exp_date__lte=after_30_days
)

关于python - 基于 2 个字段的 Django 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69493711/

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