Как сопоставить поле массива PostgreSQL в Django ORM
У меня есть поле array в моей базе данных PostrgreSQL типа текста. Есть ли способ сопоставить это с моделью Django?
Ответы
Ответ 1
Возможно, вам стоит взглянуть на django-dbarray на github. Он добавляет поддержку полей массива postgresql.
Я не использовал его раньше, но похоже, что вам просто нужно делать:
from django.db import model
import dbarray
class ProfilingTestRun(models.Model):
function = models.CharField(max_length=64)
runtimes = dbarray.FloatArrayField()
Ответ 2
Один из других приятных вариантов - http://django-orm.readthedocs.org/ --- библиотека, которая добавляет привязки ко многим типам postgres.
Основной недостаток django-orm
заключается в том, что на сегодняшний день он не имеет поддержки south
.
Ответ 3
djorm-ext-pgarray также предлагает запросы
http://www.niwi.be/2012/10/07/postgresql-array-fields-with-django/
Ответ 4
Встроенная поддержка полей модели PostgreSQL скоро появится в Django (в модуле django.contrib.postgres.fields):
Ответ 5
Поскольку Django 1.8 существует django.contrib.postgress module, который добавляет поддержку полей массива среди других типов данных PostgreSQL.
Например, вы можете сделать что-то вроде этого:
from django.contrib.postgres.fields import ArrayField
from django.db import models
class GoGame(models.Model):
board = ArrayField(ArrayField(models.IntegerField(),size=19),size=19)
Ответ 6
вам нужно подклассом model.Field
и написать методы ввода и вывода.
http://docs.djangoproject.com/en/dev/howto/custom-model-fields/#custom-database-types