В моем проекте Django используется postgresql 9.4, который поддерживает поля JSON. Я хотел бы переключиться с реляционной на (частично) нереляционную схему, используя эти поля.Схема нереляционной базы данных для Django с postgres
Скажем, у меня есть модели Foo
и Bar
и каждый объект Bar
принадлежит к одному Foo
. В настоящее время я использую ForeignKey от Bar
до Foo
для моделирования этого, но я хотел бы переключиться на сохранение объектов Bar
непосредственно внутри Foo
в виде списка экземпляров модели. С postgresql я могу использовать JSONField
в Foo
, который сохранит список представлений JSON объектов Bar
, но тогда мне придется иметь дело с сериализацией в JSON вручную.
MongoDB ORM для Django предоставляет поля Django, чтобы сделать это в чистом виде:
class Foo(models.Model):
bar_list = ListField(EmbeddedModelField('Bar'))
Есть ли способ иметь схожую функциональность бэкэндом Postgres?
Спасибо, но я играю с данными в течение нескольких лет, я знаю запросы, которые я запускаю на нем, и я уверен, что мне нужен этот рефакторинг, чтобы ускорить процесс (1. Я не запрашиваю вложенные объекты 2. Мне это не нужно. 3. Это должно быть обработано ORM 4. Изменения в этих моделях уже тяжелые python 5. Есть несколько вложенных объектов, среднее число объектов Bar в Foo близко к одному). – pintoch
Я вижу, что вы приняли это неправильно. Я не стану сомневаться в ваших знаниях данных. Я просто даю вам то, что я испытал раньше, и недостатки этого подхода. Поскольку вам это абсолютно необходимо, вы можете использовать JSONField, доступный с Django 1.9. Он получает объект Python и сохраняет его как JSON, когда он извлекается, get снова разбирается с Python. –
Да, это то, о чем я упоминал в своем вопросе, я просто задавался вопросом, существует ли более высокоуровневая версия этого. Видимо, нет, так что отвечает на вопрос. :-) – pintoch