Django-ORM条件过滤器类CASE WHEN THEN

2024-10-03 00:20:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是django1.11、postgresql9.2、python3.4

我想根据表中名为event_type的列来选择数据。如果事件类型是single,那么比较应该是同一日期(今天)的日期,否则选择该类型为重复的给定(今天)日期的所有日期。在

但是我们不能用一个查询来管理它吗?就像我们CASE和{},THEN聚集在一起?我尝试使用Q对象,但没有成功。 我想检查值是“single”时,然后添加条件,否则是另一个条件。在

我找不到任何好的解决方案,目前我已经实现了使用this

today = datetime.date.today().strftime('%Y-%m-%d')
single_events = crm_models.EventsMeta.objects.filter(
    event_type == "single",
    repeat_start=today
)

recurring_events = crm_models.EventsMeta.objects.filter(
    event_type == "recurring"
    repeat_start__lte=today
)

all_events = single_events | recurring_events

更多信息,我的模型是:

^{pr2}$

Tags: event类型todayobjectsmodelstypefilterevents
2条回答

使用这:在

today = datetime.date.today().strftime('%Y-%m-%d')
single_events = crm_models.EventsMeta.objects.filter(
    event_type__in = ["single", "recurring"]
    repeat_start=today
)

可以用()符号组合许多Q对象。我想你的情况我想这会有用的:

single_events = crm_models.EventsMeta.objects.filter(
    (Q(event_type="single") & Q(repeat_start=today)) |
    (Q(event_type="recurring") & Q(repeat_start__lte=today))
)

相关问题 更多 >