A Django field for storing standard Python set objects. It uses Postgres arrays as a backing store.
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:
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:
piet = Person(languages={'NL'})
piet.save()
john = Person(languages={'RU', 'EN'})
john.save()
All the standard Django ArrayField lookups are supported.
- 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.