项目作者: aiscenblue

项目描述 :
serialize mongoengine documents
高级语言: Python
项目地址: git://github.com/aiscenblue/mongoengine_serialize.git
创建时间: 2018-04-09T13:27:57Z
项目社区:https://github.com/aiscenblue/mongoengine_serialize

开源协议:MIT License

下载


mongoengine_serializer

serialize mongoengine documents

Build Status

Current Support

serialize ObjectIds and datetime format

if you want to improve just create a pull
request or put a suggestion comment inside
issues tab

Installation

  1. pip install mongoengine_serialize

Example:

Your mongoengine schema

  1. class Users(Document):
  2. avatar_url = URLField(required=True)
  3. first_name = StringField(required=True)
  4. last_name = StringField(required=True)
  5. email = StringField(required=True)
  6. password = StringField(required=True)
  7. created_at = DateTimeField(default=utc_now)
  8. posts = ReferenceField('Posts')
  9. class Posts(Document):
  10. content = StringField(required=True)
  11. comments = ListField(ReferenceField('Comments'))

from mongoengine_serialize import Serialize

user = Users.objects(first_name=’Hello’).first()
serialized_user = Serialize(user).jsonify()

  1. #### Changing data attributes
  2. > Alter data by using alter_after_serialize_attributes function

from mongoengine_serialize import Serialize

UserSerializer(Serialize):

  1. def alter_after_serialize_attributes(self, serialized, raw):
  2. if "avatar_url" in serialized:
  3. serialized['avatar_url'] = "http://" + serialized['avatar_ur']
  4. elif "posts" in collection:
  5. serialized["posts"] = Serialize(raw).jsonify()
  6. return serialized

user = Users.objects(first_name=’Hello’).first()
serialized_user = UserSerializer(user).jsonify()

  1. > alter_after_serialize_attributes is called each attribute of the collection.
  2. > the best practice to use it is when you needed a 2nd to 3rd to deapest tier of ObjectId connected to your parent collection.
  3. #### Exclude attributes
  4. > exclude_attribute is called before set_attributes
  5. > it helps on filtering your dictionary before returning

Serialize(user).exclude(‘password’, ‘created_at’).jsonify()
```