Используя Django JSONField на PostgreSQL, скажем, у меня есть следующая модель
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?