Django Postgres JSONB 和使用 JSONB 索引

时间:2021-04-12 08:13:09

标签: django postgresql django-models

所以我们有一个值存储在我需要查询的 JSONB 列中。我像这样为它创建了一个索引

create index user_notification_policy_id on user_notification using btree (((extra->'policy_id')::int8));

如果查询的格式如此,则解释计划正在使用索引

("user_notification"."extra" -> 'policy_id')::text = '12345678');

我怎样才能让 Django 创建一个这样的 where 子句?我一直在尝试使用 extra 但没有运气

return self.extra(
            where='("extra"->"policy_id")::int8 = %s',
            params=[policy_id]
        )

结果

E       ValueError: unsupported format character ')' (0x29) at index 1061

Django 2.2.16

1 个答案:

答案 0 :(得分:0)

我有额外的格式错误。它应该是一个数组

return self.extra(
            where=['("extra"->\'policy_id\')::int8 = %s'],
            params=[policy_id]
        )