Skip to main content

Peewee integration with the marshmallow (de)serialization library.

Project description

Build Status Version License

Marshmallow-Peewee – Peewee integration with the Marshmallow (de)serialization library.

import peewee as pw


class Role(pw.Model):
    name = pw.CharField(255, default='user')


class User(pw.Model):

    created = pw.DateTimeField(default=dt.datetime.now())
    name = pw.CharField(255)
    title = pw.CharField(127, null=True)
    active = pw.BooleanField(default=True)
    rating = pw.IntegerField(default=0)

    role = pw.ForeignKeyField(Role)


from marshmallow_peewee import ModelSchema

class UserSchema(ModelSchema):

    class Meta:
        model = User

role = Role.create()
user = User.create(name='Mike', role=role)

result, errors = UserSchema().dump(user)
print(result)
# {'active': True,
#  'created': '2016-03-29T15:27:18.600034+00:00',
#  'id': 1,
#  'name': 'Mike',
#  'rating': 0,
#  'role': 1,
#  'title': None}

result, errors = UserSchema().load(result)
assert isinstance(result, User)
assert result.name == 'Mike'

from marshmallow_peewee import Related

class UserSchema(ModelSchema):

    role = Related()

    class Meta:
        model = User

result, errors = UserSchema().dump(user)
print(result)
# {'active': True,
#  'created': '2016-03-29T15:30:32.767483+00:00',
#  'id': 1,
#  'name': 'Mike',
#  'rating': 0,
#  'role': {'id': 5, 'name': 'user'},
#  'title': None}

result, errors = UserSchema().load(result)
assert not errors
assert isinstance(result, User)
assert isinstance(result.role, Role)

Requirements

  • python 2.7+,3.4+

Installation

Marshmallow-Peewee should be installed using pip:

pip install Marshmallow-Peewee

Usage

import peewee as pw


class Role(pw.Model):
    name = pw.CharField(255, default='user')


class User(pw.Model):

    created = pw.DateTimeField(default=dt.datetime.now())
    name = pw.CharField(255)
    title = pw.CharField(127, null=True)
    active = pw.BooleanField(default=True)
    rating = pw.IntegerField(default=0)

    role = pw.ForeignKeyField(Role)


from marshmallow_peewee import ModelSchema

class UserSchema(ModelSchema):

    class Meta:

        # model: Bind peewee.Model to the Schema
        model = User

        # model_converter: Use custom model_converter
        # model_converter = marshmallow_peewee.ModelConverter

        # dump_only_pk: Primary key is dump only
        # dump_only_pk = True

Bug tracker

If you have any suggestions, bug reports or annoyances please report them to the issue tracker at https://github.com/klen/marshmallow-peewee/issues

Contributing

Development of The Marshmallow-Peewee happens at: https://github.com/klen/marshmallow-peewee

Contributors

License

Licensed under a MIT license (See LICENSE)

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

Marshmallow-Peewee-2.2.0.tar.gz (6.6 kB view details)

Uploaded Source

Built Distribution

Marshmallow_Peewee-2.2.0-py2.py3-none-any.whl (6.3 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file Marshmallow-Peewee-2.2.0.tar.gz.

File metadata

  • Download URL: Marshmallow-Peewee-2.2.0.tar.gz
  • Upload date:
  • Size: 6.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.18.4 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.23.0 CPython/3.6.3

File hashes

Hashes for Marshmallow-Peewee-2.2.0.tar.gz
Algorithm Hash digest
SHA256 51e0e888b37e85c9c8a4e85d85dfa841a8a5840d2bd5dcc7b62f614f1378c1b9
MD5 9ac18af1bb527f1b85c5f5dc8f00c1c0
BLAKE2b-256 514bbac8c57eecb01810187b722e3f9e8c75f709f978b2cdaa0c2f94bcdae67e

See more details on using hashes here.

File details

Details for the file Marshmallow_Peewee-2.2.0-py2.py3-none-any.whl.

File metadata

  • Download URL: Marshmallow_Peewee-2.2.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 6.3 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.18.4 setuptools/39.0.1 requests-toolbelt/0.8.0 tqdm/4.23.0 CPython/3.6.3

File hashes

Hashes for Marshmallow_Peewee-2.2.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 9cf1b75c306d9439d1b4c0c4dffe1f1024fb09330509a13fbd4714b772be824e
MD5 ffb26fa9c0358d86f7b45d7bc32e17a4
BLAKE2b-256 b4f01f44f202be5582938fabe448a494e7aa1266e6fb1ba3723ecd8e8f9fef86

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