Metadata-Version: 2.1
Name: django-choices
Version: 1.7.1
Summary: Sanity for the django choices functionality.
Home-page: https://github.com/bigjason/django-choices
Author: Jason Webb
Author-email: bigjasonwebb@gmail.com,sergeimaertens@gmail.com
License: MIT
Classifier: Development Status :: 5 - Production/Stable
Classifier: Operating System :: OS Independent
Classifier: License :: OSI Approved :: MIT License
Classifier: Intended Audience :: Developers
Classifier: Framework :: Django
Classifier: Framework :: Django :: 1.11
Classifier: Framework :: Django :: 2.0
Classifier: Framework :: Django :: 2.1
Classifier: Framework :: Django :: 2.2
Classifier: Programming Language :: Python :: 2.7
Classifier: Programming Language :: Python :: 3.4
Classifier: Programming Language :: Python :: 3.5
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: Implementation :: PyPy
Requires-Dist: Django>=1.11
Requires-Dist: six>=1.13.0

==============
Django-Choices
==============

|travis| |coverage| |docs| |pypi| |python-versions| |django-versions|

Order and sanity for django model choices.
------------------------------------------

Django choices provides a declarative way of using the choices_ option on django_
fields. Read the full `documentation`_ on ReadTheDocs.

------------
Installation
------------

You can install via PyPi_ or direct from the github_ repo.

.. code-block:: bash

    $ pip install django-choices

-----------
Basic Usage
-----------

To start you create a choices class. Then you point the choices property on your
fields to the ``choices`` attribute of the new class. Django will be able to use
the choices and you will be able to access the values by name.  For example you
can replace this:

.. code-block:: python

    # In models.py
    class Person(models.Model):
    	# Choices
    	PERSON_TYPE = (
            ("C", "Customer"),
            ("E", "Employee"),
            ("G", "Groundhog"),
        )
        # Fields
        name = models.CharField(max_length=32)
        type = models.CharField(max_length=1, choices=PERSON_TYPE)

With this:

.. code-block:: python

    # In models.py
    from djchoices import DjangoChoices, ChoiceItem

    class Person(models.Model):
    	# Choices
        class PersonType(DjangoChoices):
            customer = ChoiceItem("C")
            employee = ChoiceItem("E")
            groundhog = ChoiceItem("G")

        # Fields
        name = models.CharField(max_length=32)
        type = models.CharField(max_length=1, choices=PersonType.choices)

You can use this elsewhere like this:

.. code-block:: python

    # Other code
    Person.create(name="Phil", type=Person.PersonType.groundhog)

You can use them without value, and the label will be used as value:

.. code-block:: python

    class Sample(DjangoChoices):
        option_a = ChoiceItem()
        option_b = ChoiceItem()

    print(Sample.option_a)  # "option_a"

-------
License
-------

Licensed under the `MIT License`_.

-----------
Source Code
-----------

The source code can be found on github_.

.. |travis| image:: https://secure.travis-ci.org/bigjason/django-choices.svg?branch=master
    :target: http://travis-ci.org/bigjason/django-choices

.. |coverage| image:: https://coveralls.io/repos/bigjason/django-choices/badge.svg?branch=master&service=github
    :target: https://coveralls.io/github/bigjason/django-choices?branch=master

.. |docs| image:: https://readthedocs.org/projects/django-choices/badge/?version=latest
    :target: http://django-choices.readthedocs.io/en/latest/
    :alt: Documentation Status

.. |pypi| image:: https://img.shields.io/pypi/v/django-choices.svg
    :target: https://pypi.python.org/pypi/django-choices

.. |python-versions| image:: https://img.shields.io/pypi/pyversions/django-choices.svg

.. |django-versions| image:: https://img.shields.io/pypi/djversions/django-choices.svg

.. _choices: https://docs.djangoproject.com/en/stable/ref/models/fields/#choices
.. _MIT License: https://en.wikipedia.org/wiki/MIT_License
.. _django: https://www.djangoproject.com/
.. _github: https://github.com/bigjason/django-choices
.. _PyPi: https://pypi.org/project/django-choices/
.. _documentation: https://django-choices.readthedocs.io/en/latest/
