【发布时间】:2020-10-09 09:13:47
【问题描述】:
在 PostgreSQL 上使用 Django JSONField,假设我有以下模型
class Foo(models.Model):
bar = models.JSONField(null=False)
我想设置一行以具有 bar=null,其中 null 是单个 JSON 空值(不同于数据库 NULL 值)。
我可以通过原始 SQL 查询来实现它:
UPDATE "myapp_foo"
SET "bar" = 'null'::jsonb
WHERE "myapp_foo"."id" = <relevant_id>
我在 ORM 中能做的最接近的事情是
Foo.objects.filter(id=<relevant_id>).update(bar=None)
但 Django 将其解释为数据库 NULL,我收到以下错误:
null value in column "bar" violates not-null constraint
或
Foo.objects.filter(id=<relevant_id>).update(bar="null")
但 Django(正确)将此解释为 JSON 字符串 "null"
我是否遗漏了什么,或者这是 ORM 功能中的一个差距?
【问题讨论】:
标签: python json django postgresql