drf-compound-fields 2.0.0
Django-REST-framework serializer fields for compound types.
License: BSD
Keywords: rest_framework rest apis services fields compound

.. image:: https://badge.fury.io/py/drf-compound-fields.png
    :target: http://badge.fury.io/py/drf-compound-fields

.. image:: https://travis-ci.org/estebistec/drf-compound-fields.png?branch=master
        :target: https://travis-ci.org/estebistec/drf-compound-fields

.. image:: https://pypip.in/d/drf-compound-fields/badge.png
        :target: https://crate.io/packages/drf-compound-fields?version=latest

.. image:: https://coveralls.io/repos/estebistec/drf-compound-fields/badge.png?branch=master
   :target: https://coveralls.io/r/estebistec/drf-compound-fields?branch=master
   :alt: Test coverage

Overview
========

`Django-REST-framework <http://www.django-rest-framework.org/>`_
`serializer fields <http://www.django-rest-framework.org/api-guide/fields>`_ for compound types.
Django-REST-framework provides the ability to
`deal with multiple objects <http://www.django-rest-framework.org/api-guide/serializers#dealing-with-multiple-objects>`_
using the `many=True` option on serializers. That allows for lists of objects and for fields to be
lists of objects.

This package expands on that and provides fields allowing:

* Lists of simple (non-object) types, described by other serializer fields.
* Fields that allow values to be a list or individual item of some type.
* Dictionaries of simple and object types.
* Partial dictionaries which include keys specified in a list.

A quick example::

    from drf_compound_fields.fields import DictField
    from drf_compound_fields.fields import ListField
    from drf_compound_fields.fields import ListOrItemField
    from drf_compound_fields.fields import ListField
    from rest_framework import serializers

    class EmailContact(serializers.Serializer):
        email = serializers.EmailField()
        verified = serializers.BooleanField()

    class UserProfile(serializers.Serializer):
        username = serializers.CharField()
        email_contacts = EmailContact(many=True)  # List of objects: possible with REST-framework alone
        # This is the new stuff:
        skills = ListField(serializers.CharField())  # E.g., ["javascript", "python", "ruby"]
        name = ListOrItemField(serializers.CharField())  # E.g., "Prince" or ["John", "Smith"]
        bookmarks = DictField(serializers.URLField())  # E.g., {"./": "http://slashdot.org"}
        measurements = PartialDictField(included_keys=['height', 'weight'], serializers.IntegerField())

Project info
============

* Free software: BSD license
* `Documentation <https://drf-compound-fields.readthedocs.io>`_
* `Source code <https://github.com/estebistec/drf-compound-fields>`_
* `Issue tracker <https://github.com/estebistec/drf-compound-fields/issues>`_
* `CI server <https://travis-ci.org/estebistec/drf-compound-fields>`_
* IRC: no channel but see AUTHORS for individual nicks on freenode.
* Mailing list: None yet, but please log an `issue <https://github.com/estebistec/drf-compound-fields/issues>`_ if you want to have discussions about this package.




History
-------

2.0.0 (2019-09-21)
++++++++++++++++++
* Deprecate Python 2 support
* Fix #29

1.0.0 (2016-02-29)
++++++++++++++++++
* Upgrade ListOrItemField and PartialDictField for django-rest-framework 3.0 and beyond
* Remove ListField and DictField, as they now come with django-rest-framework

0.2.2 (2014-08-10)
++++++++++++++++++

Correct validation behaviors when fields are used in embedded serializers. Also correction to the
`list` and `dict` type checks for `None` values (#15, #16, #18).

* Implement `initialize` and `field_from_native` to ensure proper validation in embedded
  serializers.
* Give the fields distinct `validate` and `run_validators` implementations that don't call each
  other.
* Don't apply the `list` and `dict` type checks for `None` values.

0.2.1 (2014-04-23)
++++++++++++++++++

Loosen dependency versions

* Remove explicit dependency on Django
* Loosen rest-framework to any version before 3

0.2.0 (2014-03-16)
++++++++++++++++++

* Documentation (#3)
* Collect messages of nested errors, instead of error objects (#12)
* Add ListOrItemField type (#5, #11)
* Fix PartialDictField validation and handling of badly-typed values
* Switch project tests to py.test (#10)

0.1.0 (2014-03-06)
++++++++++++++++++

First PyPI release of rest-framework serializer compound-fields (#1). Provides:

* ListField (#4, #7)
* DictField
* PartialDictField (#8, #9)