An open API service indexing awesome lists of open source software.

https://github.com/codeyellowbv/django-postgres-setfield

Django field plugin for sets, backed by array storage in PostgreSQL
https://github.com/codeyellowbv/django-postgres-setfield

Last synced: 8 months ago
JSON representation

Django field plugin for sets, backed by array storage in PostgreSQL

Awesome Lists containing this project

README

          

django-postgres-setfield
========================

.. image:: https://travis-ci.org/CodeYellowBV/django-postgres-setfield.svg?branch=master
:target: https://travis-ci.org/CodeYellowBV/django-postgres-setfield

A Django field for storing `standard Python set `_
objects. It uses Postgres arrays as a backing store.

Usage
-----

Using the field is straightforward, and similar to how you'd use a
`Django ArrayField `_.
You can add the field to your model like so:

.. code:: python

from django.db import models
from setfield import SetField

class Person(models.Model):
LANGUAGES = (('NL', 'Dutch'), ('EN', 'English'), ('RU', 'Russian'))
speaks_languages=SetField(models.TextField(choices=LANGUAGES), default=list, blank=True)

Then later, you can use it:

.. code:: python

piet = Person(languages={'NL'})
piet.save()

john = Person(languages={'RU', 'EN'})
john.save()

Lookups
-------

All the standard `Django ArrayField`_ lookups are supported.

Caveats
-------

* Unlike ArrayFields, SetFields cannot be nested (because sets cannot
be nested in Python).
* When upgrading an existing ArrayField to a SetField, make sure the
entries are sorted using the default sort order of Python for the
corresponding object type, if you want to use the ``__exact``
lookup. Otherwise you'll get inconsistent results.