【发布时间】:2018-01-15 20:13:19
【问题描述】:
我将 Django 查询集基于具有以下 WHERE 条件的正常运行的 postgres 查询:
... WHERE COALESCE("project_story"."owner_id" = [INSERT_USER_ID], "project_story"."published_date" IS NOT NULL)
英文:如果用户是故事的所有者,则包含故事。如果用户不是所有者并且故事未发布,则将其排除。
理想情况下,Django ORM 应该允许以下内容:
queryset = queryset.filter(
Coalesce(
Q(owner_id=user.id),
Q(published_date__isnull=False)
)
)
但是在执行时,Django会抛出错误:
TypeError: 'Coalesce' 对象不可迭代
不幸的是,我需要在数据库级别进行条件过滤。
是否有允许使用 Coalesce 表达式进行选择的表示法或方法?
我不想使用 rawsql 或 queryset.extra。
【问题讨论】:
标签: python django postgresql