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.

Dependency Note

For Marshmallow<3/Python<3 please use Marshmallow-Peewee<3.

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

        # string_keys: Convert keys to strings
        # string_keys = 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

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-3.0.0.tar.gz (6.5 kB view details)

Uploaded Source

Built Distribution

Marshmallow_Peewee-3.0.0-py2.py3-none-any.whl (7.4 kB view details)

Uploaded Python 2 Python 3

File details

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

File metadata

  • Download URL: Marshmallow-Peewee-3.0.0.tar.gz
  • Upload date:
  • Size: 6.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.7.5

File hashes

Hashes for Marshmallow-Peewee-3.0.0.tar.gz
Algorithm Hash digest
SHA256 724631ffa73f75f28bafe35b3c80aaba010cd202ee3acd94a784602b185f461e
MD5 507e72f10b7b5d3b03e4066feca6f00f
BLAKE2b-256 30359d023e7b1c309c05c53ab47cd553a4f20ffc3e5b2b1a1a5a0a8d41bd7ec2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: Marshmallow_Peewee-3.0.0-py2.py3-none-any.whl
  • Upload date:
  • Size: 7.4 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.6.0 requests-toolbelt/0.9.1 tqdm/4.38.0 CPython/3.7.5

File hashes

Hashes for Marshmallow_Peewee-3.0.0-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 72cfc339277e74628144e428bd8d391b69a0a8576d69500bdc12edfcc515f609
MD5 b9bc60e7097f8609a0e03a868bb9ea84
BLAKE2b-256 c8be4a1627f0db92df89980fd93e9f4a462605d9f0118ecc588ec2ea76485cc4

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