Сравнение JSONFields в Django - PullRequest
       4

Сравнение JSONFields в Django

1 голос
/ 14 февраля 2020

Если две модели имеют JSONFields, есть ли способ сопоставить одну модель другой? Скажем, у меня есть две модели:

Crabadoodle(Model):
  classification = CharField()
  metadata = JSONField()

Glibotz(Model):
  rating = IntegerField()
  metadata = JSONField()

Если у меня есть Crabadoodle и я хочу получить все объекты Glibotz с одинаковыми полями метаданных, как бы я go об этом? Если я знаю конкретное c содержимое, я могу фильтровать достаточно просто, но как вам go сопоставить по всему полю?

1 Ответ

0 голосов
/ 14 февраля 2020

В Django нет реализации этого, но это возможно при выполнении необработанного запроса с использованием операторов jsonb (@>, <@) </p>

Что-то в следующей строке

select * 
from someapp_crabdoodle crab 
join someapp_glizbotz  glib 
on crab.metadata @> glib.metadata and crab.metadata <@ glib.metadata 
where crab.id = 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...