【发布时间】:2011-05-22 23:51:34
【问题描述】:
我的 PostrgreSQL 数据库中有一个文本类型的 array 字段。有没有办法将它映射到 Django 模型中?
【问题讨论】:
标签: django postgresql django-models django-orm
我的 PostrgreSQL 数据库中有一个文本类型的 array 字段。有没有办法将它映射到 Django 模型中?
【问题讨论】:
标签: django postgresql django-models django-orm
您可能想查看 github 上的 django-dbarray。它增加了对 postgresql 数组字段的支持。
我之前没用过,但是看起来你只需要这样做:
from django.db import model
import dbarray
class ProfilingTestRun(models.Model):
function = models.CharField(max_length=64)
runtimes = dbarray.FloatArrayField()
【讨论】:
另一个不错的选项之一是http://django-orm.readthedocs.org/ --- 一个为许多本地 postgres 类型添加绑定的库。
django-orm 的主要缺点是截至今天它还没有对south 的工作支持。
【讨论】:
djorm-ext-pgarray 也提供查询 http://www.niwi.be/2012/10/07/postgresql-array-fields-with-django/
【讨论】:
Django 即将提供对 PostgreSQL 特定模型字段的原生支持(在 django.contrib.postgres.fields 模块中):
【讨论】:
由于Django 1.8 有一个django.contrib.postgress module 增加了对array fields 以及其他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)
【讨论】:
你必须继承 model.Field 并编写输入和输出方法。
http://docs.djangoproject.com/en/dev/howto/custom-model-fields/#custom-database-types
【讨论】: