How to map PostgreSQL array field in Django ORM

后端 未结 6 921
天命终不由人
天命终不由人 2020-12-10 12:33

I have an array field in my PostrgreSQL database of type text. Is there a way to map this into a Django model ?

相关标签:
6条回答
  • 2020-12-10 12:58

    You might want to look into django-dbarray on github. It adds support for postgresql array fields.

    I haven't used it before, but it looks like you just need to do:

    from django.db import model
    import dbarray
    
    class ProfilingTestRun(models.Model):
        function = models.CharField(max_length=64)
        runtimes = dbarray.FloatArrayField()
    
    0 讨论(0)
  • 2020-12-10 13:12

    djorm-ext-pgarray also offer queries http://www.niwi.be/2012/10/07/postgresql-array-fields-with-django/

    0 讨论(0)
  • 2020-12-10 13:15

    One of the other nice options is http://django-orm.readthedocs.org/ --- a library that adds bindings to many native postgres types.

    Main drawback of django-orm is that as of today it has no working support for south.

    0 讨论(0)
  • 2020-12-10 13:15

    Since Django 1.8 there is a django.contrib.postgress module that adds support to array fields among other PostgreSQL data types.

    For example you can do something like this:

    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)
    
    0 讨论(0)
  • 2020-12-10 13:18

    you have to subclass model.Field and write input and output methods.

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

    0 讨论(0)
  • 2020-12-10 13:22

    Native support for PostgreSQL specific model fields is coming soon to Django (in the django.contrib.postgres.fields module):

    • https://docs.djangoproject.com/en/dev/ref/contrib/postgres/fields/#arrayfield
    • https://github.com/django/django/pull/2485 : The corresponding pull request
    0 讨论(0)
提交回复
热议问题