【发布时间】:2021-01-01 17:19:03
【问题描述】:
当该子句的数据在数据库中为空时,我想忽略或跳过该过滤子句,在我的情况下,有时 digital_exp_score 变量为空,但我需要按该变量进行过滤,正常的过滤器是这样的:
review = Review.objects.get(id=review_id)
offers = OfferGeneric.objects.filter(
is_personalized=True,
digital_exp_score__gte=review.digital
)
但是当 digital_exp_score 为 Null 时它不起作用,我想忽略这些情况并通过那个条件,我该怎么做?
我尝试过使用 When 子句:
offers = OfferGeneric.objects.filter(
is_personalized=True,
When(digital_exp_score__isnull=False ,
then=(digital_exp_score__gte=review.digital)
),
)
和
offers = OfferGeneric.objects.filter(
is_personalized=True,
digital_exp_score__gte=When(
digital_exp_score__isnull=False,
then=review.digital
),
)
但两者都不起作用,我得到语法错误,这些方法仅适用于条件右侧的值?有什么方法可以检查条件左侧的值(数据库值)吗?
这样的事情会很理想:
offers = OfferGeneric.objects.filter(
is_personalized=True,
digital_exp_score__gte=review.digital if digital_exp_score is not None else pass
)
【问题讨论】:
-
所以如果
digital_exp_score是NULL,你不想检查digital_exp_score。如果不为null,是否要在查询集中保留该对象? -
是的,就是这样,有可能吗?
标签: python django datatable filtering isnull