Skip to main content

Custom field for Django to separate multiple values in database with a separator and retrieve them as list

Project description

Build Status

Alternative to CommaSeparatedIntegerField built-in field that supports MultipleChoiceField, custom separator and returns values as list.

Installation

Install package from PyPi:

pip install django-separatedvaluesfield

Or download the archive from GitHub and proceed to a manual installation:

curl -L https://github.com/thoas/django-separatedvaluesfield/tarball/master | tar zx
cd thoas-django-separatedvaluesfield
python setup.py install

Add SeparatedValuesField to your Django model:

# models.py
from django.db import models

from separatedvaluesfield.models import SeparatedValuesField

class Project(models.Model):
    name = models.CharField(max_length=150)
    languages = SeparatedValuesField(
        max_length=150,
        token=',',
        choices=(
            ('en', 'English'),
            ('fr', 'French')))

If your choices values are not strings, add the cast option with the type you want to apply on values (defaults to django.utils.six.text_type):

# models.py
from django.db import models

from separatedvaluesfield.models import SeparatedValuesField

class Project(models.Model):
    name = models.CharField(max_length=150)
    languages = SeparatedValuesField(
        max_length=150,
        cast=int,
        token=',',
        choices=(
            (1, 'English'),
            (2, 'French')))

If you are running Django <= 1.6, synchronize your database using syncdb:

python manage.py syncdb

If you are running Django >= 1.7, synchronize your database using migrate:

python manage.py migrate

The SeparatedValuesField behaves like a CharField which separates values with a token (default is ,).

This field is transformed as a MultipleChoiceField when you are creating a forms.ModelForm with your model.

Usage

>>> from myapp.models import Project
>>> project = Project(name='Project with strings', languages=['fr', 'en'])
>>> project.save() # save 'fr,en' in database for the column "languages"
>>> project.pk
1

>>> project = Project.objects.get(pk=1)
>>> project.languages
['fr', 'en']

# If you added "cast" option to the field to cast to 'int'
>>> project = Project(name='Project with integers', languages=[u'1', u'2'])
>>> project.save() # save '1,2' in database for the column "languages"
>>> project = Project.objects.get(pk=1)
>>> project.languages
[1, 2]

Contribute

  1. Fork the repository

  2. Clone your fork

  3. Create a dedicated branch (never ever work in master)

  4. Create your development environment with make dev

  5. Activate your environment with source .venv/bin/activate

  6. Make modifications

  7. Write tests and execute them with make test

  8. Be sure all test pass with tox

  9. If all tests pass, submit a pull request

Compatibility

This library is compatible with:

  • python2.6, django1.5

  • python2.6, django1.6

  • python2.7, django1.5

  • python2.7, django1.6

  • python2.7, django1.7

  • python2.7, django1.8

  • python3.3, django1.5

  • python3.3, django1.6

  • python3.3, django1.7

  • python3.3, django1.8

  • python3.4, django1.5

  • python3.4, django1.6

  • python3.4, django1.7

  • python3.4, django1.8

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-separatedvaluesfield-0.3.1.tar.gz (5.5 kB view details)

Uploaded Source

File details

Details for the file django-separatedvaluesfield-0.3.1.tar.gz.

File metadata

File hashes

Hashes for django-separatedvaluesfield-0.3.1.tar.gz
Algorithm Hash digest
SHA256 f38abf430a845a630f08a2afa9fa1f1484789bb759ec6909e3894a4b2c7cdb5a
MD5 29eccf4ca9f565c0fb0e03a9220bf382
BLAKE2b-256 b76a1c650b9d72f3aee9e83fc762253b83967210efc5b53742196fef569ab233

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page