Как отобразить поле массива PostgreSQL в Django ORM - PullRequest
14 голосов
/ 09 декабря 2010

У меня есть поле array в моей базе данных PostrgreSQL типа text. Есть ли способ сопоставить это с моделью Джанго?

Ответы [ 6 ]

12 голосов
/ 19 сентября 2011

Возможно, вы захотите взглянуть на django-dbarray на github. Добавлена ​​поддержка полей массива postgresql.

Я не использовал его раньше, но, похоже, вам просто нужно сделать:

from django.db import model
import dbarray

class ProfilingTestRun(models.Model):
    function = models.CharField(max_length=64)
    runtimes = dbarray.FloatArrayField()
4 голосов
/ 19 февраля 2013

djorm-ext-pgarray также предлагает запросы http://www.niwi.be/2012/10/07/postgresql-array-fields-with-django/

4 голосов
/ 03 февраля 2012

Одной из других приятных опций является http://django -orm.readthedocs.org / --- библиотека, которая добавляет привязки ко многим родным типам postgres.

Главный недостаток django-orm заключается в том, что на сегодняшний день у него нет рабочей поддержки south.

3 голосов
/ 16 августа 2014

Собственная поддержка полей модели PostgreSQL скоро появится в Django (в модуле django.contrib.postgres.fields):

2 голосов
/ 18 мая 2015

С Django 1.8 существует модуль django.contrib.postgress , который добавляет поддержку полей массива среди других типов данных 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)
1 голос
/ 09 декабря 2010

Вы должны создать подкласс model.Field и написать методы ввода и вывода.

http://docs.djangoproject.com/en/dev/howto/custom-model-fields/#custom-database-types

...