Skip to main content

Peewee integration with the marshmallow (de)serialization library.

Project description

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

Peewee-Marshmallow should be installed using pip:

pip install peewee-marshmallow

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/peewee-marshmallow/issues

Contributing

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

Contributors

License

Licensed under a MIT license (See LICENSE)

If you wish to express your appreciation for the project, you are welcome to send a postcard to:

Kirill Klenov
pos. Severny 8-3
MO, Istra, 143500
Russia

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

Uploaded Source

Built Distribution

Marshmallow_Peewee-0.2.2-py2.py3-none-any.whl (6.9 kB view details)

Uploaded Python 2 Python 3

File details

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

File metadata

File hashes

Hashes for Marshmallow-Peewee-0.2.2.tar.gz
Algorithm Hash digest
SHA256 5807584d812776d64f35fb536fb9f0f856e3b45c1cf3377b17a49cfe27dec04f
MD5 4b80d52bd6244e70be294aa2fa4d35c0
BLAKE2b-256 6250ef52ba78c0e1ff40fda088306766b87ca18b9f63f1b81034782ba66f71da

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for Marshmallow_Peewee-0.2.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 2a92be9b115cf7d60d1b56353fde069274f5c7110f30965b4f0acf9ab1218c10
MD5 5b98384b8b9be8efd7331f78f019561c
BLAKE2b-256 ff944cb6ab04b1e77756cafa88885e568bac3c8f8fddd5cee26690655c907c47

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