Coder Social home page Coder Social logo

django-dbarray's Introduction

Django dbarray

Django model fields that store lists of values, implemented using the PostgreSQL ARRAY type.

Requirements

  • PostgreSQL
  • psycopg2
  • Django >= 1.2

The ARRAY db type is PostgreSQL specific, so these model fields currently work only on PostgreSQL with psycopg2. A FieldError will be raised if the field is used with another database.

This package has been tested with Django versions 1.2 through 1.6, inclusive.

Fields

The field types defined in the dbarray module are listed in the table below, along with each field's parent class (from django.db.models), and the data type of the postgresql column it will create.

Each field takes the same arguments as its parent class.

Field Type Parent Class Postgresql Type
IntegerArrayField IntegerField integer[]
FloatArrayField FloatField double precision[]
TextArrayField TextField text[]
CharArrayField CharField character varying[]
DateArrayField DateField date[]

Custom Fields

To define a new array field for a base field type FooField:

import dbarray

class FooArrayField(dbarray.ArrayFieldBase, FooField):
    __metaclass__ = dbarray.ArrayFieldMetaclass

This may or may not work depending on a few factors. You might, for example, need to override the db_type method to make it put the [] in the right spot in the column type used in generated SQL.

Another issue that may arise when performing lookups with array fields is that PostgreSQL may get the query parameter as a data type that isn't compatible with the type of the db column (for example text[] instead of varchar[]). Then you will get an error like the following:

DatabaseError: operator does not exist: character varying[] = text[]
LINE 1: ... FROM "dbarray_chars" WHERE "dbarray_chars"."arr" = ARRAY['A...
                                                             ^
HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.

You can rectify this by setting cast_lookups = True on your ArrayFieldBase subclass, which instructs it to add an explicit type cast to the SQL query.

Look in the source code for more examples of how to handle issues with new ArrayField types.

Version History

Version 0.2

Released:October 17, 2013

The fields raise a FieldError exception if used on a database other than PostgreSQL. (This was the original behavior)

Version 0.1

Released:October 16, 2013

Added tests and fixes for lookups and DateArrayField.

Version 0.0.1

Released:January 10, 2011

Initial release

django-dbarray's People

Contributors

altaurog avatar eire1130 avatar michaelmulley avatar t-evans avatar wiswaud avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.